I denne artikel forklares det, hvordan du kan bruge forespørgsler med højeste værdier og totalforespørgsler til at finde de seneste eller tidligste datoer i et sæt poster. Dette kan hjælpe dig med at besvare en række forretningsmæssige spørgsmål, f.eks. hvornår en kunde senest har afgivet en ordre, eller hvilke fem kvartaler der har været bedst til salg, efter by.
Denne artikel indeholder
Oversigt
Du kan rangere data og gennemse de højest rangerede elementer ved hjælp af en forespørgsel med de højeste værdier. En topværdiforespørgsel er en udvælgelsesforespørgsel, der returnerer et angivet antal eller procent af værdier fra toppen af resultaterne, f.eks. de fem mest populære sider på et websted. Du kan bruge en forespørgsel med de højeste værdier mod enhver type værdier – de behøver ikke at være tal.
Hvis du vil gruppere eller opsummere dine data, før du rangerer dem, behøver du ikke at bruge en forespørgsel med de højeste værdier. Antag f.eks., at du skal finde salgsnumrene for en bestemt dato for hver by, din virksomhed driver. Hvis det er tilfældet, bliver byer til kategorier (du skal finde dataene pr. by), så du bruger en totalforespørgsel.
Når du bruger en forespørgsel med de højeste værdier til at finde poster, der indeholder de seneste eller tidligste datoer i en tabel eller gruppe af poster, kan du besvare en række forretningsmæssige spørgsmål, f.eks. følgende:
-
Hvem har haft det største salg for nylig?
-
Hvornår afde en kunde sidste gang en ordre?
-
Hvornår er de næste tre fødselsdage i teamet?
Hvis du vil oprette en forespørgsel med den højeste værdi, skal du starte med at oprette en udvælgelsesforespørgsel. Sortér derefter dataene efter dit spørgsmål – uanset om du leder efter toppen eller bunden. Hvis du vil gruppere eller opsummere dataene, kan du omdanne udvælgelsesforespørgslen til en totalforespørgsel. Du kan derefter bruge en aggregeringsfunktion, f.eks. Maks eller Min, til at returnere den højeste eller laveste værdi eller Første eller Sidste til at returnere den tidligste eller seneste dato.
Denne artikel forudsætter, at de datoværdier, du bruger, har datatypen Dato/klokkeslæt. Hvis dine datoværdier er i et tekstfelt, .
Overvej at bruge et filter i stedet for en forespørgsel med de højeste værdier
Et filter er normalt bedre, hvis du har en bestemt dato i tankerne. Overvej følgende for at afgøre, om du skal oprette en forespørgsel med de højeste værdier eller anvende et filter:
-
Hvis du vil returnere alle de poster, hvor datoen stemmer overens, ligger før eller senere end en bestemt dato, skal du bruge et filter. Hvis du f.eks. vil se salgsdatoerne mellem april og juli, skal du anvende et filter.
-
Hvis du vil returnere et angivet antal poster, der har de seneste eller seneste datoer i et felt, og du ikke kender de nøjagtige datoværdier, eller de er ligegyldige, skal du oprette en forespørgsel med de højeste værdier. Hvis du f.eks. vil se de fem bedste salgstal, skal du bruge en forespørgsel med de højeste værdier.
Du kan finde flere oplysninger om oprettelse og brug af filtre i artiklen Anvend et filter for at få vist udvalgte poster i en Access-database.
Forbered eksempeldata til at følge med eksemplerne
Trinnene i denne artikel bruger dataene i følgende eksempeltabeller.
Tabellen Medarbejdere
Efternavn |
Fornavn |
Adresse |
By |
CountryOrR egion |
Fødselsdato |
Ansættelsesdato |
Pedersen |
Josh |
1 Main St. |
New York |
USA |
05-feb-1968 |
10-Jun-1994 |
Heloo |
Waleed |
52 1st St. |
Boston |
USA |
22-Maj-1957 |
22-11-1996 |
Pica |
Guido |
3122 75th Ave. S.W. |
Seattle |
USA |
11-11-1960 |
11-03-2000 |
Bagel |
Jane 1. |
1 Contoso Blvd. |
London |
Storbritannien |
22-marts-1964 |
22-Jun-1998 |
Pris |
Julian |
Calle Smith 2 |
Mexico City |
Mexico |
05-Jun-1972 |
05-jan-2002 |
Hughes |
Ane |
3122 75th St. S. |
Seattle |
USA |
23-jan-1970 |
23-apr-1999 |
Riley |
Steve |
67 Big St. |
Tampa |
USA |
14-apr-1964 |
14-okt-2004 |
Og så er det ikke det, der |
2010 |
2 næsefuld pkwy |
Portland |
USA |
29-okt-1959 |
29-marts 1997 |
EventType-tabellen
TypeID |
Hændelsestype |
1 |
Produktlancering |
2 |
Funktionen Corporate |
3 |
Funktionen Private |
4 |
Fund Raiser |
5 |
Messe |
6 |
Forelæsning |
7 |
Koncert |
8 |
Exhibit |
9 |
Gademesse |
Tabellen Kunder
Kunde-id |
Firma |
Kontakt |
1 |
Contoso, Ltd. Grafik |
Jonathan Haas |
2 |
Tailspin Toys |
Ellen Adams |
3 |
Fabrikam |
Carol Philips |
4 |
Wingtip Toys |
Lucio Iallo |
5 |
A. Datum |
Mandar Samant |
6 |
Adventure Works |
Brian Burke |
7 |
Design Institute |
Jaka Ogy |
8 |
Fine art-skole |
Milena Duomanova |
Tabellen Hændelser
Hændelses-id |
Hændelsestype |
Kunde |
Begivenhedsdato |
Pris |
1 |
Produktlancering |
Contoso, Ltd. |
4/14/2011 |
DKK 10.000 |
2 |
Funktionen Corporate |
Tailspin Toys |
4/21/2011 |
DKK 8.000 |
3 |
Messe |
Tailspin Toys |
01-05-2011 |
DKK 25.000 |
4 |
Exhibit |
Graphic Design Institute |
5/13/2011 |
kr. 45.000 |
5 |
Messe |
Contoso, Ltd. |
5/14/2011 |
DKK 55.000 |
6 |
Koncert |
Fine art-skole |
5/23/2011 |
DKK 12.000 |
7 |
Produktlancering |
A. Datum |
6/1/2011 |
DKK 15.000 |
8 |
Produktlancering |
Wingtip Toys |
6/18/2011 |
DKK 21.000 |
9 |
Fund Raiser |
Adventure Works |
6/22/2011 |
DKK 1.300 |
10 |
Forelæsning |
Graphic Design Institute |
6/25/2011 |
DKK 2.450 |
11 |
Forelæsning |
Contoso, Ltd. |
04-07-2011 |
DKK 3.800 |
12 |
Gademesse |
Graphic Design Institute |
04-07-2011 |
DKK 5.500 |
Bemærk!: Trinnene i dette afsnit forudsætter, at tabellerne Kunder og Hændelsestype er placeret på en-siden af en-til-mange-relationerne til tabellen Hændelser. I dette tilfælde deler tabellen Hændelser felterne Kunde-id og TypeID. De totalforespørgsler, der er beskrevet i næste afsnit, fungerer ikke uden disse relationer.
Indsætte eksempeldataene i Excel-regneark
-
Start Excel. Der åbnes en tom projektmappe.
-
Tryk på Skift+F11 for at indsætte et regneark (du skal bruge fire).
-
Kopiér dataene fra hver eksempeltabel til et tomt regneark. Medtag kolonneoverskrifterne (den første række).
Oprette databasetabeller ud fra regneark
-
Markér dataene fra det første regneark, herunder kolonneoverskrifterne.
-
Højreklik på navigationsruden, og klik derefter på Sæt ind.
-
Klik på Ja for at bekræfte, at den første række indeholder kolonneoverskrifter.
-
Gentag trin 1-3 for hvert af de resterende regneark.
Find den seneste eller seneste dato
Trinnene i dette afsnit bruger eksempeldataene til at illustrere processen med at oprette en forespørgsel med de højeste værdier.
Opret en grundlæggende forespørgsel om højeste værdier
-
Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.
-
Dobbeltklik på tabellen Medarbejdere, og klik derefter på Luk.
Hvis du bruger eksempeldataene, skal du føje tabellen Medarbejdere til forespørgslen.
-
Tilføj de felter, du vil bruge i forespørgslen, i designgitteret. Du kan dobbeltklikke på hvert felt eller trække og slippe hvert felt i en tom celle i feltrækken.
Hvis du bruger eksempeltabellen, skal du tilføje felterne Fornavn, Efternavn og Fødselsdato.
-
I det felt, der indeholder dine øverste eller nederste værdier (feltet Fødselsdato, hvis du bruger eksempeltabellen), skal du klikke på rækken Sortér og vælge enten Stigende eller Faldende.
Faldende sorteringsrækkefølge returnerer den seneste dato, og stigende sorteringsrækkefølge returnerer den tidligste dato.
Vigtigt!: Du skal kun angive en værdi i rækken Sortér for felter, der indeholder dine datoer. Hvis du angiver en sorteringsrækkefølge for et andet felt, returnerer forespørgslen ikke de ønskede resultater.
-
Klik på pil ned ud for Alle (listen Øverste værdier) i gruppen Funktioner under fanen Design, og angiv enten det antal poster, du vil have vist, eller vælg en indstilling på listen.
-
Klik på Kør at køre forespørgslen og få vist resultaterne i dataarkvisning.
-
Gem forespørgslen som NextBirthDays.
Du kan se, at denne type af topværdiforespørgsel kan besvare grundlæggende spørgsmål, f.eks. hvem der er den ældste eller mindste person i virksomheden. De næste trin forklarer, hvordan du bruger udtryk og andre kriterier til at føje styrke og fleksibilitet til forespørgslen. De kriterier, der vises i næste trin, returnerer de næste tre medarbejders fødselsdage.
Føj kriterier til forespørgslen
I disse trin bruges den forespørgsel, der blev oprettet i den foregående procedure. Du kan følge sammen med en anden forespørgsel med de højeste værdier, så længe den indeholder faktiske Dato/klokkeslæt-data, ikke tekstværdier.
Tip!: Hvis du vil have en bedre forståelse af, hvordan denne forespørgsel fungerer, kan du skifte mellem designvisning og dataarkvisning ved hvert trin. Hvis du vil se den faktiske forespørgselskode, skal du skifte til SQL-visning. Hvis du vil skifte mellem visninger, skal du højreklikke på fanen øverst i forespørgslen og derefter klikke på den ønskede visning.
-
Højreklik på forespørgslen NextBirthDays i navigationsruden, og klik derefter på Designvisning.
-
I forespørgselsdesigngitteret i kolonnen til højre for Fødselsdato skal du skrive følgende:
MonthRuden: DatePart("m",[Fødselsdato]).
Dette udtryk henter måneden fra Fødselsdato ved hjælp af funktionen DatePart. -
I den næste kolonne i forespørgselsdesigngitteret skal du angive følgende:
DayOfMonthRuden: DatePart("d",[Fødselsdato])Dette udtryk henter dagen i måneden fra Fødselsdato ved hjælp af
funktionen DatePart. -
Fjern markeringen i afkrydsningsfelterne i rækken Vis for hvert af de to udtryk, du lige har angivet.
-
Klik på rækken Sortér for hvert udtryk, og vælg derefter Stigende.
-
I rækken Kriterier i kolonnen Fødselsdato skal du skrive følgende udtryk:
Month([Fødselsdato]) > Month(Date()) OR Month([Birth Date])= Month(Date()) AND Day([Birth Date])>Day(Date())Dette udtryk gør
følgende:-
Month( [Fødselsdato]) > Month(Date()) angiver, at fødselsdatoen for hver medarbejder falder i en fremtidig måned.
-
The Month([Fødselsdato])= Month(Date()) And Day([Fødselsdato])>Day(Date()) angiver, at hvis fødselsdatoen forekommer i den aktuelle måned, falder fødselsdagen på eller efter den aktuelle dag.
Kort sagt udelader dette udtryk alle poster, hvor fødselsdagen forekommer mellem 1. januar og dags dato.
Tip!: Du kan finde flere eksempler på forespørgselskriterieudtryk i artiklen Eksempler på forespørgselskriterier.
-
-
Skriv 3 i feltet Retur i gruppen Konfiguration af forespørgsel under fanenDesign.
-
Klik på Kør i gruppen Resultater under fanen Design.
Bemærk!: I din egen forespørgsel med dine egne data kan du nogle gange se flere poster, end du har angivet. Hvis dine data indeholder flere poster, der deler en værdi, der er blandt de øverste værdier, returnerer forespørgslen alle disse poster, selvom det betyder, at der skal returneres flere poster, end du ønskede.
Finde de seneste eller de seneste datoer for grupper af poster
Du kan bruge en totalforespørgsel til at finde de tidligste eller seneste datoer for poster, der falder i grupper, f.eks. begivenheder grupperet efter by. En totalforespørgsel er en udvælgelsesforespørgsel, der bruger aggregeringsfunktioner (f.eks. Gruppere efter, Mi,Maks,Tæl, Første og Sidste) til at beregne værdier for hvert outputfelt.
Medtag det felt, du vil bruge til kategorier – til at gruppere efter – og feltet med værdier, der skal opsummeres. Hvis du medtager andre outputfelter – f.eks. navnene på kunder, når du grupperer efter hændelsestype – bruger forespørgslen også disse felter til at lave grupper, så resultaterne ændres, så de ikke besvarer det oprindelige spørgsmål. Hvis du vil navnlægge rækkerne ved hjælp af andre felter, skal du oprette en ekstra forespørgsel, der bruger totalforespørgslen som kilde, og føje de ekstra felter til forespørgslen.
Tip!: At opbygge forespørgsler i trin er en meget effektiv strategi til at besvare mere avancerede spørgsmål. Hvis du har problemer med at få en kompliceret forespørgsel til at fungere, skal du overveje, om du kan opdele den i en række mere enkle forespørgsler.
Oprette en totalforespørgsel
Denne procedure bruger eksempeltabellen Hændelser ogeksempeltabellen EventType til at besvare dette spørgsmål:
Hvornår var den seneste begivenhed af hver begivenhedstype, undtagen hvad der var tilst?
-
Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.
-
Dobbeltklik på tabellerne Hændelser og EventType.
Hver tabel vises i den øverste del af Forespørgselsdesigner. -
Dobbeltklik på feltet EventType i tabellen EventType og feltet EventDate fra tabellen Hændelser for at føje felterne til forespørgselsdesigngitteret.
-
I forespørgselsdesigngitteret i rækken Kriterier i feltet EventType skal du skrive<>Koncert.
Tip!: Du kan finde flere eksempler på kriterieudtryk i artiklen Eksempler på forespørgselskriterier.
-
På fanen Design i gruppen Vis/skjul skal du klikke på Totaler.
-
Klik på rækken Total i feltet EventDate i forespørgselsdesigngitteret, og klik derefter på Maks.
-
Klik på Vis i gruppen Resultater under fanen Design , og klik derefter på SQL-visning.
-
I SQL-vinduet skal du i slutningen af SELECT-delsætningen lige efter nøgleordet AS erstatte MaxOfEventDate med MostRecent.
-
Gem forespørgslen som MostRecentEventByType.
Oprette en anden forespørgsel for at tilføje flere data
Denne procedure bruger forespørgslen MostRecentEventByType fra den foregående procedure til at besvare dette spørgsmål:
Hvem var kunden ved den seneste begivenhed af hver begivenhedstype?
-
Klik på Forespørgselsdesign i gruppen Forespørgsler under fanen Opret.
-
Dobbeltklik på forespørgslen MostRecentEventByType under fanen Forespørgsler.
-
Dobbeltklik på tabellen Hændelser og tabellen Kunder under fanen Tabeller.
-
Dobbeltklik på følgende felter i Forespørgselsdesigner:
-
Dobbeltklik på EventType i tabellen Hændelser.
-
Dobbeltklik på MostRecentEventByType-forespørgslen på MostRecentEventByType.
-
Dobbeltklik på Firma i tabellen Kunder.
-
-
Vælg Stigende i rækken Sortér i kolonnen EventType i forespørgselsdesigngitteret.
-
Klik på Kør i gruppen Resultater under fanen Design.