I den här artikeln förklaras hur du använder toppvärdesfrågor och summafrågor för att hitta de senaste eller tidigaste datumen i en uppsättning poster. Det kan hjälpa dig att besvara en mängd olika affärsfrågor, till exempel när en kund senast lade en beställning, eller vilka fem kvartal som har varit bäst för försäljning, efter ort.
Artikelinnehåll
Översikt
Du kan rangordna data och granska de högst rankade objekten med hjälp av en fråga med toppvärden. En fråga med det högsta värdet är en urvalsfråga som returnerar ett angivet antal eller procent av värdena högst upp i resultatet, till exempel de fem mest populära sidorna på en webbplats. Du kan använda en toppvärdesfråga mot alla typer av värden – de behöver inte vara tal.
Om du vill gruppera eller sammanfatta dina data innan du rangordnar dem behöver du inte använda en fråga med toppvärden. Anta till exempel att du måste hitta försäljningssiffrorna för ett visst datum för varje ort där företaget är verksamt. I så fall blir städerna kategorier (du måste hitta data per ort), så du använder en summafråga.
När du använder en fråga med toppvärden för att hitta poster som innehåller de senaste eller tidigaste datumen i en tabell eller grupp med poster kan du besvara en mängd olika affärsfrågor, till exempel följande:
-
Vem har gjort mest försäljning den senaste tiden?
-
När gjorde en kund senast en beställning?
-
När fyller teamet tre år?
Om du vill skapa en fråga med det högsta värdet börjar du med att skapa en urvalsfråga. Sortera sedan data efter din fråga – oavsett om du letar efter toppen eller botten. Om du behöver gruppera eller sammanfatta data omvandlar du urvalsfrågan till en summafråga. Du kan sedan använda en mängdfunktion, till exempel Max eller Min , för att returnera det högsta eller lägsta värdet, eller Första eller Sista för att returnera det tidigaste eller senaste datumet.
Den här artikeln förutsätter att datumvärdena som du använder har datatypen Datum/tid. Om datumvärdena finns i ett textfält, .
Överväg att använda ett filter i stället för en fråga med toppvärden
Ett filter är vanligtvis bättre om du har ett visst datum i åtanke. För att avgöra om du ska skapa en fråga med de högsta värdena eller använda ett filter bör du tänka på följande:
-
Om du vill returnera alla poster där datumet matchar, är före eller senare än ett visst datum, använder du ett filter. Om du till exempel vill se försäljningsdatum mellan april och juli använder du ett filter.
-
Om du vill returnera en angiven mängd poster som har de senaste eller senaste datumen i ett fält, och du inte känner till de exakta datumvärdena, eller om de inte spelar någon roll, skapar du en fråga med toppvärden. Om du till exempel vill se de fem bästa försäljnings kvartalen använder du en fråga med toppvärden.
Mer information om hur du skapar och använder filter finns i artikeln Använda ett filter för att visa valda poster i en Access-databas.
Förbereda exempeldata att följa tillsammans med exemplen
I stegen i den här artikeln används data i följande exempeltabeller.
Tabellen Anställda
|
LastName |
Förnamn |
Adress |
Ort |
CountryOrR egion |
Födelsedatum |
Anställningsdatum |
|
Barnhill |
Jonas |
1 Main St. |
New York |
USA |
05-Feb-1968 |
10 juni 1994 |
|
Heloo |
Waleed |
52 1st St. |
Boston |
USA |
22 maj 1957 |
22-nov-1996 |
|
Pica |
Guido |
3122 75th Ave. S.W. |
Seattle |
USA |
11-nov-1960 |
11 mars 2000 |
|
Bagel |
Jean Philippe |
1 Contoso Blvd. |
London |
Storbritannien |
22-Mar-1964 |
22 juni 1998 |
|
Pris |
Julian |
Calle Smith 2 |
Mexico City |
Mexiko |
05 juni 1972 |
den 5 januari 2002 |
|
Hughes |
Christine |
3122 75th St. S. |
Malmö |
USA |
23-jan-1970 |
23-Apr-1999 |
|
Riley |
Steve |
67 Big St. |
Tampa |
USA |
14-Apr-1964 |
14 oktober 2004 |
|
Birkby |
Dana |
2 Näsig Pkwy |
Piteå |
USA |
29 oktober 1959 |
29 mars 1997 |
Tabellen EventType
|
TypeID |
Händelsetyp |
|
1 |
Produktlansering |
|
2 |
Funktionen Företag |
|
3 |
Funktionen Privat |
|
4 |
Fund Raiser |
|
5 |
Mässa |
|
6 |
Föreläsning |
|
7 |
Konsert |
|
8 |
Utställa |
|
9 |
Gatumässa |
Tabellen Kunder
|
Kund-ID |
Företag |
Kontaktperson |
|
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 |
Designinstitut |
Jaka Stele |
|
8 |
Konsthögskolan |
Milena Duomanova |
Tabellen Händelser
|
Händelse-ID |
Händelsetyp |
Kund |
Händelsedatum |
Pris |
|
1 |
Produktlansering |
Contoso, Ltd. |
4/14/2011 |
10 000 kr |
|
2 |
Funktionen Företag |
Tailspin Toys |
4/21/2011 |
8 000 kr |
|
3 |
Mässa |
Tailspin Toys |
2011-05-01 |
$25,000 |
|
4 |
Utställa |
Graphic Design Institute |
5/13/2011 |
4 500 kr |
|
5 |
Mässa |
Contoso, Ltd. |
5/14/2011 |
$55,000 |
|
6 |
Konsert |
Konsthögskolan |
5/23/2011 |
12 000 kr |
|
7 |
Produktlansering |
A. Datum |
6/1/2011 |
15 000 kr |
|
8 |
Produktlansering |
Wingtip Toys |
6/18/2011 |
21 000 kr |
|
9 |
Fund Raiser |
Adventure Works |
6/22/2011 |
$1 300 |
|
10 |
Föreläsning |
Graphic Design Institute |
6/25/2011 |
$2 450 |
|
11 |
Föreläsning |
Contoso, Ltd. |
2011-07-04 |
$3 800 |
|
1,2 |
Gatumässa |
Graphic Design Institute |
2011-07-04 |
5 500 kr |
Obs!: Anvisningarna i det här avsnittet förutsätter att tabellerna Kunder och Händelsetyp finns på 1-sidan av 1:N-relationer med tabellen Händelser. I det här fallet delar tabellen Händelser fälten CustomerID och TypeID. Summorna för frågor som beskrivs i nästa avsnitt fungerar inte utan dessa relationer.
Klistra in exempeldata i Excel-kalkylblad
-
Starta Excel. En tom arbetsbok öppnas.
-
Tryck på SKIFT+F11 för att infoga ett kalkylblad (du behöver fyra).
-
Kopiera data från varje exempeltabell till ett tomt kalkylblad. Ta med kolumnrubrikerna (den första raden).
Skapa databastabeller från kalkylbladen
-
Markera data från det första kalkylbladet, inklusive kolumnrubrikerna.
-
Högerklicka på navigeringsfönstret och klicka sedan på Klistra in.
-
Klicka på Ja för att bekräfta att den första raden innehåller kolumnrubriker.
-
Upprepa steg 1–3 för vart och ett av de återstående kalkylbladen.
Hitta det senaste eller senaste datumet
I stegen i det här avsnittet används exempeldata för att illustrera processen med att skapa en fråga med toppvärden.
Skapa en fråga med grundläggande toppvärden
-
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
-
Dubbelklicka på tabellen Anställda och klicka sedan på Stäng.
Om du använder exempeldata lägger du till tabellen Anställda i frågan.
-
Lägg till de fält som du vill använda i frågan i designrutnätet. Du kan dubbelklicka på varje fält eller dra och släppa varje fält i en tom cell på raden Fält .
Om du använder exempeltabellen lägger du till fälten Förnamn, Efternamn och Födelsedatum.
-
I fältet som innehåller dina högsta eller lägsta värden (fältet Födelsedatum, om du använder exempeltabellen), klickar du på raden Sortera och väljer antingen Stigande eller Fallande.
Fallande sorteringsordning returnerar det senaste datumet och Stigande sorteringsordning returnerar det tidigaste datumet.
Viktigt!: Du måste ange ett värde på raden Sortera endast för fält som innehåller dina datum. Om du anger en sorteringsordning för ett annat fält returnerar frågan inte det resultat du vill ha.
-
Klicka på nedåtpilen bredvid Alla (listan Överst värden) i gruppen Verktyg på fliken Design och ange antingen antalet poster som du vill se eller välj ett alternativ i listan.
-
Klicka på Kör
för att köra frågan och visa resultatet i databladsvyn. -
Spara frågan som NextBirthDays.
Du kan se att den här typen av toppvärdesfråga kan besvara grundläggande frågor, till exempel vem som är den äldsta eller yngsta personen i företaget. I nästa steg förklaras hur du använder uttryck och andra villkor för att ge frågan kraft och flexibilitet. Villkoret som visas i nästa steg returnerar de tre följande födelsedagarna för anställda.
Lägg till villkor i frågan
I de här stegen används frågan som skapades i föregående procedur. Du kan följa med en annan fråga med toppvärden så länge den innehåller faktiska datum-/tidsdata, inte textvärden.
Tips: Om du vill förstå hur den här frågan fungerar växlar du mellan designvyn och databladsvyn i varje steg. Om du vill se den faktiska frågekoden växlar du till SQL-vyn. Om du vill växla mellan vyer högerklickar du på fliken högst upp i frågan och klickar sedan på den vy du vill använda.
-
Högerklicka på frågan NextBirthDays i navigeringsfönstret och klicka sedan på Designvy.
-
I frågerutnätet, i kolumnen till höger om Födelsedatum, anger du följande:MonthBorn: DatePart("m",[BirthDate]).Det här uttrycket extraherar månaden från Födelsedatum med hjälp av funktionen DatumDel .
-
I nästa kolumn i frågerutnätet anger du följande:DayOfMonthBorn: DatePart("d",[BirthDate])Det här uttrycket extraherar dagen i månaden från Födelsedatum med hjälp av funktionen DatumDel .
-
Avmarkera kryssrutorna på raden Visa för vart och ett av de två uttryck som du just angett.
-
Klicka på raden Sortera för varje uttryck och välj sedan Stigande.
-
På raden Villkor i kolumnen Födelsedatum skriver du följande uttryck:Månad([Födelsedatum]) > Månad(Datum()) ELLER Månad([Födelsedatum])= Månad(Datum()) OCH Dag([Födelsedatum])>Dag(Datum())Det här uttrycket gör följande:
-
Månad( [födelsedatum]) > Månad(Datum()) anger att födelsedatumet för varje anställd infaller under en kommande månad.
-
Månad( [födelsedatum])= Månad(Datum()) Och Dag([Födelsedatum])>Dag(Datum()) anger att om födelsedatumet inträffar i den aktuella månaden infaller födelsedagen på eller efter den aktuella dagen.
Kort uttryckt utesluter det här uttrycket alla poster där födelsedagen inträffar mellan den 1 januari och det aktuella datumet.
Tips: Fler exempel på frågevillkorsuttryck finns i artikeln Exempel på frågevillkor.
-
-
Skriv 3 i rutan Retur i gruppen Frågekonfiguration på fliken Design.
-
Klicka på Kör i gruppen Resultat på fliken Design
.
Obs!: I din egen fråga med dina egna data kan du ibland se fler poster än du har angett. Om dina data innehåller flera poster som delar ett värde som finns bland de högsta värdena returnerar frågan alla sådana poster även om det innebär att fler poster returneras än du vill.
Hitta de senaste eller senaste datumen för grupper av poster
Du använder en summafråga för att hitta de tidigaste eller senaste datumen för poster som finns i grupper, till exempel händelser grupperade efter ort. En summafråga är en urvalsfråga som använder mängdfunktioner (t.ex. Gruppera efter, Mi, Max, Antal, Första och Sista) för att beräkna värden för varje utdatafält.
Ta med det fält som du vill använda för kategorier – att gruppera efter – och fältet med värden som du vill summera. Om du tar med andra utdatafält – t.ex. namnen på kunder när du grupperar efter händelsetyp – använder frågan även dessa fält för att skapa grupper och ändrar resultatet så att de inte besvarar den ursprungliga frågan. Om du vill märka raderna med hjälp av andra fält skapar du en ytterligare fråga som använder summafrågan som källa och lägger till ytterligare fält i den frågan.
Tips: Att skapa frågor i steg är en mycket effektiv strategi för att besvara mer avancerade frågor. Om du har problem med att få en komplicerad fråga att fungera kan du överväga om du kan dela upp den i en rad enklare frågor.
Skapa en summafråga
I den här proceduren används exempeltabellen Händelser och exempeltabellen EventType för att besvara den här frågan:
När var den senaste händelsen av varje händelsetyp, exklusive konserter?
-
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
-
Dubbelklicka på tabellerna Händelser och EventType. Varje tabell visas i den övre delen av frågedesignern.
-
Dubbelklicka på fältet EventType i tabellen EventType och fältet EventDate från tabellen Events för att lägga till fälten i frågerutnätet.
-
Ange <>Concert på raden Villkor i fältet EventType i frågerutnätet.
Tips: Fler exempel på villkorsuttryck finns i artikeln Exempel på frågevillkor.
-
Klicka på Summor i gruppen Visa/dölj på fliken Design.
-
Klicka på raden Summa i fältet Händelsedatum i frågerutnätet och klicka sedan på Max.
-
Klicka på SQL-vy i gruppen Resultat på fliken Design och sedan på Datablad.
-
I SQL-fönstret, i slutet av SELECT-satsen, strax efter nyckelordet AS, ersätter du MaxOfEventDate med MostRecent.
-
Spara frågan som MostRecentEventByType.
Skapa en andra fråga för att lägga till mer data
I den här proceduren används frågan MostRecentEventByType från föregående procedur för att besvara den här frågan:
Vem var kunden vid den senaste händelsen av varje händelsetyp?
-
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
-
Dubbelklicka på frågan MostRecentEventByType på fliken Frågor .
-
Dubbelklicka på tabellen Händelser och tabellen Kunder på fliken Tabeller .
-
Dubbelklicka på följande fält i frågedesignern:
-
Dubbelklicka på EventType i tabellen Händelser.
-
Dubbelklicka på MostRecentEventByType-frågan på MostRecent.
-
Dubbelklicka på Företag i tabellen Kunder.
-
-
Välj Stigande på raden Sortera i kolumnen EventType i frågerutnätet.
-
Klicka på Kör i gruppen Resultat på fliken Design.