In dit artikel wordt uitgelegd hoe u top-waardenquery's en totalenquery's gebruikt om de meest recente of vroegste datum in een set records te vinden. Op deze manier kunt u antwoord geven op diverse zakelijke vragen, zoals wanneer een klant voor het laatst een order heeft geplaatst of welke vijf kwartalen het beste zijn geweest voor de verkoop per plaats.
In dit artikel
Overzicht
U kunt gegevens rangschikken en de items met de hoogste rangschikken bekijken met een top-waardenquery. Een top-waardenquery is een selectiequery die een bepaald aantal of percentage van de waarden boven aan de resultaten retourneert, bijvoorbeeld de vijf populairste pagina's op een website. U kunt een top-waardenquery gebruiken ten opzichte van elk type waarde: ze hoeven geen getallen te zijn.
Als u uw gegevens wilt groepeert of samenvatten voordat u ze rangschikt, hoeft u geen top-waardenquery te gebruiken. Stel dat u de verkoopcijfers voor een bepaalde datum nodig hebt voor elke plaats waarin uw bedrijf actief is. De plaatsen worden in dit geval categorieën (u moet de gegevens per plaats zoeken), zodat u een totalenquery kunt gebruiken.
Wanneer u een top-waardenquery gebruikt om records te zoeken die de laatste of vroegste datum in een tabel of groep records bevatten, kunt u een antwoord geven op allerlei zakelijke vragen, zoals:
-
Wie heeft de laatste tijd de meeste verkopen verkocht?
-
Wanneer heeft een klant voor het laatst een order geplaatst?
-
Wanneer zijn de volgende drie verjaardagen in het team?
Als u een top-waardenquery wilt maken, maakt u eerst een selectiequery. Sorteer vervolgens de gegevens op basis van uw vraag, of u naar boven of onderaan zoekt. Als u de gegevens wilt groepeert of samenvatten, zet u de selectiequery om in een totalenquery. Vervolgens kunt u een statistische functie gebruiken, zoals Max of Min, om de hoogste of laagste waarde te retourneren, of First of Last om de vroegste of laatste datum als resultaat te hebben.
In dit artikel wordt ervan uitgenomen dat de datumwaarden die u gebruikt het gegevenstype Datum/tijd hebben. Als de datumwaarden in een tekstveld staan, .
Een filter gebruiken in plaats van een top-waardenquery
Een filter is meestal beter als u een specifieke datum in gedachten hebt. Houd het volgende in gedachte als u wilt bepalen of u een top-waardenquery moet maken of beter een filter kunt toepassen:
-
Gebruik een filter als u alle records wilt retourneren met een datum die gelijk is aan, eerder is dan of later is dan een specifieke datum. Als u bijvoorbeeld de datums voor verkopen tussen april en juli wilt weergeven, past u een filter toe.
-
Als u een opgegeven hoeveelheid records wilt retourneren met de meest recente of laatste datum in een veld en u de exacte datumwaarden niet weet of ze niet van belang zijn, maakt u een top-waardenquery. Als u bijvoorbeeld de vijf beste verkoop kwartalen wilt zien, gebruikt u een top-waardenquery.
Zie het artikel Filter toepassen om records in een Access-databaseweer te geven voor meer informatie over het maken en gebruiken van filters.
Voorbeeldgegevens voorbereiden voor gebruik bij de voorbeelden
In de stappen in dit artikel worden de gegevens in de volgende voorbeeldtabellen gebruikt.
De tabel Werknemers
Achternaam |
Voornaam |
Adres |
Plaats |
CountryOrR egion |
Geboortedatum |
Datum in dienst |
Barendse |
Jan |
Hoofdstraat 1 |
Utrecht |
NL |
05-02-1968 |
10-06-1994 |
Helder |
Wim |
Dapperstraat 52 |
Rotterdam |
NL |
22-05-1957 |
22-11-1996 |
Pieter |
Goffert |
3122 75e Ave. S.W. |
Zwolle |
NL |
11-11-1960 |
11-03-2000 |
Bagel |
Jean Philippe |
1 Contoso Blvd. |
Londen |
VK |
22-03-1964 |
22-06-1998 |
Prijs |
Julian |
Calle Smith 2 |
Mexico-Stad |
Mexico |
05-06-1972 |
05-01-2002 |
Heimans |
Christine |
Breestraat 43 |
Zwolle |
NL |
23-01-1970 |
23-04-1999 |
Ridder, de |
Steven |
Rijksstraatweg 67 |
Tilburg |
NL |
14-04-1964 |
14-10-2004 |
Berkhout |
Daphne |
Draaiweg 80 |
Pijnacker |
NL |
29-10-1959 |
29-03-1997 |
De tabel EventType
Type-id |
Gebeurtenistype |
1 |
Productlancering |
2 |
Bedrijfsfeest |
3 |
Privéfeest |
4 |
Inzamelingsactie |
5 |
Beurs |
6 |
Lezing |
7 |
Concert |
8 |
Tentoonstelling |
9 |
Braderie |
De tabel Klanten
Klant-id |
Bedrijf |
Contactpersoon |
1 |
Contoso, Ltd. Graphic |
Guus Van Lingen |
2 |
De troetelbeer |
Johanna Roossien |
3 |
Fabrikam |
Hilde Eppink |
4 |
Wervelwind Speelgoed |
Stefan Spel |
5 |
A. Datum |
Hessel Wanders |
6 |
Adventure Works |
Wander Wolthuis |
7 |
Instituut voor grafisch ontwerp |
Maria Beukema |
8 |
Kunstacademie |
Elsje Quint |
De tabel Evenementen
Evenement-id |
Gebeurtenistype |
Klant |
Gebeurtenisdatum |
Prijs |
1 |
Productlancering |
Contoso, Ltd. |
4/14/2011 |
€ 10.000 |
2 |
Bedrijfsfeest |
De troetelbeer |
4/21/2011 |
€ 8.000 |
3 |
Beurs |
De troetelbeer |
01-05-11 |
€ 25.000 |
4 |
Tentoonstelling |
Instituut voor grafisch ontwerp |
5/13/2011 |
€ 4.500 |
5 |
Beurs |
Contoso, Ltd. |
5/14/2011 |
€ 55.000 |
6 |
Concert |
Kunstacademie |
5/23/2011 |
€ 12.000 |
7 |
Productlancering |
A. Datum |
6/1/2011 |
€ 15.000 |
8 |
Productlancering |
Wervelwind Speelgoed |
6/18/2011 |
€ 21.000 |
9 |
Inzamelingsactie |
Adventure Works |
6/22/2011 |
€ 1.300 |
10 |
Lezing |
Instituut voor grafisch ontwerp |
6/25/2011 |
€ 2.450 |
11 |
Lezing |
Contoso, Ltd. |
04.07.11 |
€ 3.800 |
12 |
Braderie |
Instituut voor grafisch ontwerp |
04.07.11 |
€ 5.500 |
Opmerking: De stappen gaan uit van een een-op-veel-relatie tussen de tabellen Klanten en Evenementtype en de tabel Evenementen. In dit geval deelt de tabel Evenementen de velden Klant-id en Type-id. De in de volgende secties beschreven totalenquery's werken niet zonder deze relaties.
De voorbeeldgegevens in Excel-werkbladen plakken
-
Start Excel. Er wordt een lege werkmap geopend.
-
Druk op Shift+F11 om een werkblad in te voegen (u hebt er vier nodig).
-
Kopieer de gegevens van elke voorbeeldtabel in een leeg werkblad. Neem de kolomkoppen (de eerste rij) op.
Databasetabellen van de werkbladen maken
-
Selecteer de gegevens van het eerste werkblad, inclusief de kolomkoppen.
-
Klik met de rechtermuisknop op het navigatiedeelvenster en klik op Plakken.
-
Klik op Ja om te bevestigen dat de eerste rij kolomkoppen bevat.
-
Herhaal stap 1 tot en met 3 voor elk van de resterende werkbladen.
De meest of minst recente datum zoeken
In de stappen in deze sectie worden de voorbeeldgegevens gebruikt om het proces voor het maken van een top-waardenquery te illustreren.
Een top-waardenquery maken
-
Klik op het tabblad Maken in de groep Query's op Queryontwerp.
-
Dubbelklik op de tabel Werknemers en klik vervolgens op Sluiten.
Als u de voorbeeldgegevens gebruikt, voegt u de tabel Werknemers toe aan de query.
-
Voeg de velden die u in de query wilt gebruiken aan het ontwerpraster toe. U kunt op elk veld dubbelklikken of elk veld slepen en in een lege cel in de rij Veld neerzetten.
Als u de voorbeeldtabel gebruikt, voegt u de velden Voornaam, Achternaam en Geboortedatum toe.
-
In het veld dat de hoogste of laagste waarden bevat (het veld Geboortedatum als u de voorbeeldtabel gebruikt) klikt u op de rij Sorteren en selecteert u Oplopend of Aflopend.
Als u het veld in aflopende volgorde sorteert, wordt de meest recente datum als resultaat gegeven en als u op oplopende waarde sorteert, wordt de vroegste datum als resultaat gegeven.
Belangrijk: Stel in de rij Sorteren alleen een waarde in voor de velden die de datums bevatten. Als u een sorteervolgorde voor een ander veld opgeeft, retourneert de query niet de gewenste resultaten.
-
Klik op het tabblad Ontwerpen in de groep in Hulpmiddelen op de pijl-omlaag naast Alles (de lijst Top-waarden) en voer het aantal records in dat u wilt weergeven of selecteer een optie in de lijst.
-
Klik op Uitvoeren om de query uit te voeren en de resultaten weer te geven in de gegevensbladweergave.
-
Sla de query op als NextDays.
U kunt zien dat met dit type top-waardenquery eenvoudige vragen kunnen worden beantwoord, zoals wie de oudste of jongste persoon in het bedrijf is. Aan de hand van de volgende stappen wordt uitgelegd hoe u expressies en andere criteria kunt gebruiken om de query krachtiger en flexibeler te maken. Met de criteria in de volgende stap worden de komende drie verjaardagen van werknemers als resultaat gegeven.
Criteria toevoegen aan de query
Voor deze stappen wordt de query gebruikt die in de vorige procedure is gemaakt. U kunt een andere top-waardenquery volgen als deze werkelijke datum-/tijdgegevens bevat, geen tekstwaarden.
Tip: Als u meer wilt weten over de manier waarop deze query werkt, schakelt u in elke stap tussen de ontwerpweergave en de gegevensbladweergave. Als u de daadwerkelijke querycode wilt zien, schakelt u over naar de SQL-weergave. Als u wilt schakelen tussen weergaven, klikt u met de rechtermuisknop op het tabblad boven aan de query en klikt u vervolgens op de 3D-weergave.
-
Klik in het navigatiedeelvenster met de rechtermuisknop op de query NextDays en klik vervolgens op Ontwerpweergave.
-
Voer in het queryontwerpraster, in de kolom rechts van Geboortedatum, het volgende in:
MonthKolom: DatePart("m",[Geboortedatum]). Met deze expressie wordt de maand uit Geboortedatum gehaald met de functie DatePart. -
Voer in de volgende kolom van het queryontwerpraster het volgende in:
DayOfMonthDatum: DatePart("d",[Geboortedatum])Met deze expressie wordt de dag van de maand geëxtraheerd op basis van Geboortedatum met de functie DatePart. -
Vink de selectievakjes in de rij Voorstelling uit voor elk van de twee expressies die u zojuist hebt ingevoerd.
-
Klik op de rij Sorteren voor elke expressie en selecteer Oplopend.
-
Typ de volgende expressie in de rij Criteria van de kolom Geboortedatum:
Month([Geboortedatum]) > Month(Date()) OR Month([Geboortedatum])= Month(Date()) AND Day([Geboortedatum])>Day(Date())Deze expressie doet het volgende:-
Month( [Geboortedatum]) > Month(Date()) geeft aan dat de geboortedatum van elke werknemer in een volgende maand valt.
-
Month( [Geboortedatum])= Month(Date()) And Day([Geboortedatum])>Day(Date()) geeft aan dat als de geboortedatum in de huidige maand valt, de verjaardag op of na de huidige dag valt.
Kortom, met deze expressie worden alle records uitgesloten waar de verjaardag plaatsvindt tussen 1 januari en de huidige datum.
Tip: Zie het artikel Voorbeelden van querycriteria voor meer voorbeelden van expressies voor querycriteria.
-
-
Typ op het tabblad Ontwerpen in de groep Query's instellen 3 in het vak Retourneren.
-
Ga naar het tabblad Ontwerpen en klik in de groep Resultaten op Uitvoeren .
Opmerking: In uw eigen query ziet u soms meer records dan u hebt opgegeven. Als uw gegevens meerdere records bevatten die een waarde delen die bij de hoogste waarden behoort, worden al deze records met de query als resultaat geven, ook als dit betekent dat er meer records worden retourneren dan u had verwacht.
De meest of minst recente datum vinden voor groepen records
U gebruikt een totalenquery om de vroegste of laatste datum te vinden voor records die in groepen zijn verdeeld, zoals gebeurtenissen die zijn gegroepeerd op plaats. Een totalenquery is een selectiequery waarin statistische functies (zoals Groep voor, Min,Max,Aantal,Eersteen Laatste) worden gebruikt om waarden voor elk uitvoerveld te berekenen.
Neem het veld op dat u wilt gebruiken voor categorieën , om op te groepeert, en het veld met de waarden die u wilt samenvatten. Als u andere uitvoervelden op neemt, bijvoorbeeld de namen van klanten wanneer u groepeert op gebeurtenistype, worden deze velden ook gebruikt om groepen te maken en worden de resultaten zo veranderd dat ze niet uw oorspronkelijke vraag beantwoorden. Als u een label wilt toevoegen aan de rijen met andere velden, maakt u een extra query die de totalenquery als bron gebruikt en voegt u de extra velden aan die query toe.
Tip: Het maken van query's in stappen is een zeer effectieve strategie voor het beantwoorden van geavanceerdere vragen. Als u problemen hebt om een ingewikkelde query te laten werken, overweeg dan of u deze kunt opeenbreken in een reeks eenvoudigere query's.
Een totalenquery maken
Voor deze procedure worden de voorbeeldtabel Evenementen en de voorbeeldtabel EventType gebruikt om deze vraag te beantwoorden:
Wanneer was de meest recente gebeurtenis van elk type evenement, met uitzondering van één evenement?
-
Klik op het tabblad Maken in de groep Query's op Queryontwerp.
-
Dubbelklik op de tabellen Events en EventType.
Elke tabel wordt weergegeven in het bovenste gedeelte van de ontwerpfunctie voor query's. -
Dubbelklik in het veld EventType van de tabel EventType en het veld EventDate uit de tabel Events om de velden toe te voegen aan het queryontwerpraster.
-
Voer in het queryontwerpraster in de rij Criteria van het veld EventType<>Concert.
Tip: Zie het artikel Voorbeelden van querycriteria voor meer voorbeelden van criteriumexpressie.
-
Klik op het tabblad Ontwerp in de groep Weergeven/verbergen op Totalen.
-
Klik in het queryontwerpraster op de rij Totaal van het veld EventDate en klik vervolgens op Max.
-
Klik op het tabblad Ontwerp in de groep Resultaten op Weergave en klik vervolgens op SQL-weergave.
-
Vervang MaxOfEventDate in het SQL-venster aan het einde van de SELECT-component, vlak na het sleutelwoord AS, door MostRecent.
-
Sla de query op als MostRecentEventByType.
Een tweede query maken om meer gegevens weer te geven
In deze procedure wordt de query MostRecentEventByType uit de vorige procedure gebruikt om deze vraag te beantwoorden:
Wie was de klant bij de meest recente gebeurtenis van elk gebeurtenistype?
-
Klik op het tabblad Maken in de groep Query's op Queryontwerp.
-
Dubbelklik op het tabblad Query's op de query MostRecentEventByType.
-
Dubbelklik op het tabblad Tabellen op de tabel Evenementen en de tabel Klanten.
-
Dubbelklik in de ontwerpfunctie voor query's op de volgende velden:
-
Dubbelklik in de tabel Evenementen op EventType.
-
Dubbelklik in de query MostRecentEventByType op MostRecent.
-
Dubbelklik in de tabel Klanten op Bedrijf.
-
-
Selecteer Oplopend in het queryontwerpraster in de rij Sorteren van de kolom EventType.
-
Ga naar het tabblad Ontwerp en klik in de groep Resultaten op Uitvoeren.