Tento článek vysvětluje, jak použít dotazy na nejvyšší hodnoty a dotazy souhrnů k vyhledání nejnovějších nebo nejstarších dat v sadě záznamů. To vám může pomoct zodpovědět řadu obchodních otázek, například kdy zákazník naposledy zadal objednávku nebo které pět čtvrtletí bylo pro vás nejlepších z hlediska prodeje, podle měst.
V tomto článku
Přehled
Pomocí dotazu na nejvyšší hodnoty můžete seřadit data a zkontrolovat položky s nejvyšším pořadím. Dotaz s nejvyšší hodnotou je výběrový dotaz, který vrátí zadaný počet nebo procento hodnot z horní části výsledků, například pět nejoblíbenějších stránek na webu. Dotaz na nejvyšší hodnoty můžete použít pro jakýkoli druh hodnot – nemusí to být čísla.
Pokud chcete data seskupit nebo shrnout, než je seřadíte, nemusíte použít dotaz na nejvyšší hodnoty. Předpokládejme například, že potřebujete najít prodejní čísla pro dané datum pro každé město, ve kterém vaše společnost působí. V takovém případě se z měst stanou kategorie (potřebujete najít data pro jednotlivá města), takže použijete dotaz součtů.
Když pomocí dotazu na nejvyšší hodnoty vyhledáte záznamy, které obsahují nejnovější nebo nejstarší data v tabulce nebo skupině záznamů, můžete odpovědět na řadu obchodních otázek, například na následující:
-
Kdo se v poslední době nejvíce prodá?
-
Kdy zákazník naposledy provedl objednávku?
-
Kdy jsou v týmu další tři narozeniny?
Pokud chcete vytvořit dotaz s nejvyšší hodnotou, začněte vytvořením výběrového dotazu. Potom data seřaďte podle své otázky – ať už hledáte horní nebo dolní část. Pokud potřebujete data seskupit nebo shrnout, přepněte výběrový dotaz na dotaz souhrnů. Potom můžete použít agregační funkci, například Max nebo Min , která vrátí nejvyšší nebo nejnižší hodnotu, nebo První nebo Poslední k vrácení nejstaršího nebo nejnovějšího data.
Tento článek předpokládá, že hodnoty data, které použijete, mají datový typ Datum a čas. Pokud jsou hodnoty kalendářních dat v textovém poli, .
Zvažte použití filtru místo dotazu na nejvyšší hodnoty.
Filtr je obvykle lepší, pokud máte na mysli konkrétní datum. Pokud chcete zjistit, jestli byste měli vytvořit dotaz na nejvyšší hodnoty nebo použít filtr, zvažte následující:
-
Pokud chcete vrátit všechny záznamy, u kterých se datum shoduje s datem, které předchází určitému datu nebo je pozdější, použijte filtr. Pokud chcete například zobrazit data prodeje mezi dubnem a červencem, použijte filtr.
-
Pokud chcete vrátit zadané množství záznamů, které mají v poli nejnovější nebo nejnovější data, a neznáte přesné hodnoty kalendářních dat nebo na nich nezáleží, vytvoříte dotaz na nejvyšší hodnoty. Pokud chcete například zobrazit pět nejlepších čtvrtletí prodeje, použijte dotaz s nejvyššími hodnotami.
Další informace o vytváření a používání filtrů najdete v článku Použití filtru k zobrazení vybraných záznamů v accessové databázi.
Příprava ukázkových dat, která budou následovat s příklady
Kroky v tomto článku používají data v následujících ukázkových tabulkách.
Tabulka Zaměstnanci
|
LastName |
Jméno |
Adresa |
Město |
CountryOrR egion |
Datum narození |
Datum nástupu |
|
Klčo |
René |
1 Main St. |
New York |
USA |
5. února 1968 |
10. června 1994 |
|
Heloo |
Waleed |
52 1st St. |
Boston |
USA |
22. května 1957 |
22. listopadu 1996 |
|
Veselý |
Guido |
3122 75th Ave. S.W. |
Seattle |
USA |
11. listopadu 1960 |
11. března 2000 |
|
Bagel |
Jean Philippe |
1 Contoso Blvd. |
Londýn |
UK |
22. března 1964 |
22. června 1998 |
|
Cena |
Juliánský |
Calle Smith 2 |
Mexico City |
Mexiko |
5. června 1972 |
5. ledna 2002 |
|
Hughes |
Christine |
3122 75. sv. |
Praha |
USA |
23. ledna 1970 |
23. dubna 1999 |
|
Riley |
Petr |
67 Big St. |
Tampa |
USA |
14. dubna 1964 |
14. října 2004 |
|
Birkby |
Dana |
2 Nosey Pkwy |
Ostrava |
USA |
29. října 1959 |
29. března 1997 |
Tabulka EventType
|
TypeID |
Typ události |
|
1 |
Uvedení produktu na trh |
|
2 |
Podniková funkce |
|
3 |
Privátní funkce |
|
4 |
Zvedač fondů |
|
5 |
Veletrh |
|
6 |
Přednáška |
|
7 |
Koncert |
|
8 |
Exponát |
|
9 |
Pouliční veletrh |
Tabulka Zákazníci
|
CustomerID |
Společnost |
Kontakt |
|
1 |
Contoso, Ltd. Grafika |
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 Stele |
|
8 |
Škola výtvarných umění |
Milena Duomanová |
Tabulka Events
|
ID události |
Typ události |
Zákazník |
Datum události |
Cena |
|
1 |
Uvedení produktu na trh |
Contoso, Ltd. |
4/14/2011 |
100 000 Kč |
|
2 |
Podniková funkce |
Tailspin Toys |
4/21/2011 |
80 000 Kč |
|
3 |
Veletrh |
Tailspin Toys |
01.05.11 |
25 000 Kč |
|
4 |
Exponát |
Graphic Design Institute |
5/13/2011 |
4 500 Kč |
|
5 |
Veletrh |
Contoso, Ltd. |
5/14/2011 |
55 000 Kč |
|
6 |
Koncert |
Škola výtvarných umění |
5/23/2011 |
12 000 Kč |
|
7 |
Uvedení produktu na trh |
A. Datum |
6/1/2011 |
150 000 Kč |
|
8 |
Uvedení produktu na trh |
Wingtip Toys |
6/18/2011 |
21 000 Kč |
|
9 |
Zvedač fondů |
Adventure Works |
6/22/2011 |
1 300 Kč |
|
10 |
Přednáška |
Graphic Design Institute |
6/25/2011 |
2 450 Kč |
|
11 |
Přednáška |
Contoso, Ltd. |
4.7.2011 |
3 800 Kč |
|
12 |
Pouliční veletrh |
Graphic Design Institute |
4.7.2011 |
5 500 Kč |
Poznámka: Kroky v této části předpokládají, že tabulky Customers (Zákazníci) a Event Type (Typ události) se nacházejí na straně "1" relace 1:N s tabulkou Events. V tomto případě tabulka Events sdílí pole CustomerID a TypeID. Dotazy souhrnů popsané v dalších částech nebudou bez těchto relací fungovat.
Vložení ukázkových dat do excelových listů
-
Spusťte Excel. Otevře se prázdný sešit.
-
Stisknutím kombinace kláves SHIFT+F11 vložte list (budete potřebovat čtyři).
-
Zkopírujte data z každé ukázkové tabulky do prázdného listu. Zahrňte záhlaví sloupců (první řádek).
Vytvoření databázových tabulek z listů
-
Vyberte data z prvního listu, včetně záhlaví sloupců.
-
Klikněte pravým tlačítkem na navigační podokno a potom klikněte na Vložit.
-
Kliknutím na Ano potvrďte, že první řádek obsahuje záhlaví sloupců.
-
Opakujte kroky 1 až 3 pro každý zbývající list.
Vyhledání posledního nebo nejméně posledního data
Kroky v této části používají ukázková data k ilustraci procesu vytvoření dotazu s nejvyššími hodnotami.
Vytvoření základního dotazu na nejvyšší hodnoty
-
Na kartě Vytvoření klikněte ve skupině Dotazů na tlačítko Návrh dotazu.
-
Poklikejte na tabulku Employees (Zaměstnanci) a potom klikněte na Close (Zavřít).
Pokud použijete ukázková data, přidejte do dotazu tabulku Zaměstnanci.
-
Přidejte pole, která chcete použít v dotazu, do návrhové mřížky. Na každé pole můžete poklikáním nebo přetažením jednotlivých polí na prázdnou buňku v řádku Pole .
Pokud použijete ukázkovou tabulku, přidejte pole Jméno, Příjmení a Datum narození.
-
V poli, které obsahuje nejvyšší nebo nejnižší hodnoty (pole Datum narození, pokud používáte ukázkovou tabulku), klikněte na řádek Seřadit a vyberte Vzestupně nebo Sestupně.
Sestupné pořadí řazení vrátí nejnovější datum a Vzestupné pořadí řazení vrátí nejstarší datum.
Důležité informace: V řádku Seřadit je nutné nastavit hodnotu pouze pro pole, která obsahují vaše kalendářní data. Pokud zadáte pořadí řazení pro jiné pole, dotaz nevrátí požadované výsledky.
-
Na kartě Návrh klikněte ve skupině Nástroje na šipku dolů vedle položky Vše (seznam Nejvyšší hodnoty ) a zadejte počet záznamů, které chcete zobrazit, nebo vyberte některou možnost ze seznamu.
-
Kliknutím na Spustit
spusťte dotaz a zobrazte výsledky v zobrazení Datový list. -
Uložte dotaz jako NextBirthDays.
Uvidíte, že tento typ dotazu s nejvyššími hodnotami může odpovídat na základní otázky, jako je například to, kdo je nejstarší nebo nejmladší osoba ve společnosti. V dalších krocích se dozvíte, jak použít výrazy a další kritéria k přidání výkonu a flexibility dotazu. Kritéria zobrazená v dalším kroku vrátí další tři narozeniny zaměstnanců.
Přidání kritérií do dotazu
V těchto krocích se použije dotaz vytvořený v předchozím postupu. Dotaz na nejvyšší hodnoty můžete sledovat, pokud obsahuje skutečná data data a čas, nikoli textové hodnoty.
Tip: Pokud chcete lépe porozumět tomu, jak tento dotaz funguje, přepněte v každém kroku mezi návrhové zobrazení a zobrazením Datový list. Pokud chcete zobrazit skutečný kód dotazu, přepněte do zobrazení SQL. Pokud chcete přepnout mezi zobrazeními, klikněte pravým tlačítkem myši na kartu v horní části dotazu a potom klikněte na požadované zobrazení.
-
V navigačním podokně klikněte pravým tlačítkem na dotaz NextBirthDays a potom klikněte na Návrhové zobrazení.
-
V návrhové mřížce dotazu zadejte do sloupce napravo od pole Datum narození následující:MonthBorn: DatePart("m",[Datum narození]).Tento výraz extrahuje měsíc z BirthDate pomocí funkce DatePart .
-
Do dalšího sloupce návrhové mřížky dotazu zadejte následující:DayOfMonthBorn: DatePart("d";[Datum narození])Tento výraz extrahuje den v měsíci z pole BirthDate pomocí funkce DatePart .
-
Zrušte zaškrtnutí políček na řádku Zobrazit u každého ze dvou výrazů, které jste právě zadali.
-
Klikněte na řádek Seřadit pro každý výraz a pak vyberte Vzestupně.
-
Do řádku Kritéria ve sloupci Datum narození zadejte následující výraz:Month([Birth Date]) > Month(Date()) OR Month([Birth Date])= Month(Date()) AND Day([Birth Date])>Day(Date())Tento výraz dělá toto:
-
Month( [Datum narození]) > Month(Date()) určuje, že datum narození každého zaměstnance spadá do budoucího měsíce.
-
Month( [Birth Date])= Month(Date()) And Day([Birth Date])>Day(Date()) určuje, že pokud datum narození nastane v aktuálním měsíci, připadají narozeniny na aktuální den nebo za aktuálním dnem.
Stručně řečeno, tento výraz vyloučí všechny záznamy, ve kterých se narozeniny vyskytují mezi 1. lednem a aktuálním datem.
Tip: Další příklady výrazů kritérií dotazu najdete v článku Příklady kritérií dotazu.
-
-
Na kartě Návrh ve skupině Nastavení dotazu zadejte do pole Návrathodnotu 3.
-
Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit
.
Poznámka: Ve vlastním dotazu, který používá vaše vlastní data, se někdy může zobrazit více záznamů, než jste zadali. Pokud vaše data obsahují více záznamů, které sdílejí hodnotu, která patří mezi nejvyšší hodnoty, dotaz vrátí všechny takové záznamy, i když to znamená, že se vrátí více záznamů, než jste chtěli.
Vyhledání nejnovějších nebo nejméně posledních dat pro skupiny záznamů
Dotaz souhrnů slouží k vyhledání nejstarších nebo nejnovějších dat záznamů, které spadají do skupin, například událostí seskupených podle měst. Souhrnný dotaz je výběrový dotaz, který používá agregační funkce (například Seskupit podle, Mv, Max, Počet, První a Poslední) k výpočtu hodnot pro každé výstupní pole.
Zahrňte pole, které chcete použít pro kategorie – seskupit podle – a pole s hodnotami, které chcete sumarizovat. Pokud zahrnete další výstupní pole – například jména zákazníků při seskupování podle typu události – dotaz tato pole použije také k vytvoření skupin a změní výsledky tak, aby neodpoví na původní otázku. Pokud chcete řádky označit pomocí jiných polí, vytvoříte další dotaz, který použije dotaz součtů jako zdroj, a přidáte do dotazu další pole.
Tip: Vytváření dotazů v krocích je velmi efektivní strategií pro odpovědi na pokročilejší otázky. Pokud máte potíže s fungováním složitého dotazu, zvažte, jestli byste ho mohli rozdělit na řadu jednodušších dotazů.
Vytvoření souhrnného dotazu
Tento postup používá ukázkovou tabulku Events a ukázkovou tabulku EventType k zodpovězení této otázky:
Kdy byla poslední událost každého typu události, s výjimkou koncertů?
-
Na kartě Vytvoření klikněte ve skupině Dotazů na tlačítko Návrh dotazu.
-
Poklikejte na tabulky Events a EventType. Každá tabulka se zobrazí v horní části návrháře dotazů.
-
Poklikejte na pole EventType tabulky EventType a pole EventDate z tabulky Events a přidejte pole do návrhové mřížky dotazu.
-
V návrhové mřížce dotazu zadejte do řádku Kritéria pole Typ události<>Koncert.
Tip: Další příklady výrazů kritérií najdete v článku Příklady kritérií dotazu.
-
Na kartě Návrh ve skupině Zobrazit nebo skrýt klikněte na Součty.
-
V návrhové mřížce dotazu klikněte v poli Datum události na řádek Souhrn a potom klikněte na Max.
-
Na kartě Návrh klikněte ve skupině Výsledky na položku Zobrazení a potom na položku Zobrazení SQL.
-
V okně SQL na konci klauzule SELECT hned za klíčovým slovem AS nahraďte MaxOfEventDate za MostRecent.
-
Uložte dotaz jako MostRecentEventByType.
Vytvoření druhého dotazu pro přidání dalších dat
Tento postup používá k zodpovězení této otázky dotaz MostRecentEventByType z předchozího postupu:
Kdo byl zákazníkem na poslední události jednotlivých typů událostí?
-
Na kartě Vytvoření klikněte ve skupině Dotazů na tlačítko Návrh dotazu.
-
Na kartě Dotazy poklikejte na dotaz MostRecentEventByType.
-
Na kartě Tables (Tabulky ) poklikejte na tabulku Events (Události) a Customers (Zákazníci).
-
V návrháři dotazů poklikejte na následující pole:
-
V tabulce Events poklikejte na Položku Typ události.
-
V dotazu MostRecentEventByType poklikejte na MostRecent.
-
V tabulce Zákazníci poklikejte na Společnost.
-
-
V návrhové mřížce dotazu vyberte na řádku Sort (Seřadit) ve sloupci EventType (Typ události) možnost Ascending (Vzestupně).
-
Na kartě Návrh klikněte ve skupině Výsledky na tlačítko Spustit.