Tento článok vysvetľuje, ako používať dotazy s najvyššími hodnotami a dotazy súčtov na vyhľadanie najnovších alebo najskorších dátumov v množine záznamov. Pomôže vám to odpovedať na rôzne obchodné otázky, napríklad kedy zákazník naposledy zadal objednávku, alebo ktorých päť štvrťrokov bolo najvhodnejších na predaj podľa mesta.
Obsah tohto článku
Prehľad
Údaje môžete zoradiť a skontrolovať položky s najvyšším hodnotením pomocou dotazu s najvyššími hodnotami. Dotaz s najvyššou hodnotou je výberový dotaz, ktorý vráti zadaný počet alebo percento hodnôt z hornej časti výsledkov, napríklad päť najobľúbenejších stránok na webovej lokalite. Dotaz s najvyššími hodnotami môžete použiť na akýkoľvek druh hodnôt – nemusia to byť čísla.
Ak chcete údaje zoskupiť alebo zhrnúť skôr, ako ich zoradíte, nemusíte použiť dotaz s najvyššími hodnotami. Predpokladajme napríklad, že potrebujete nájsť čísla predaja pre daný dátum pre každé mesto, v ktorom vaša spoločnosť pôsobí. V takom prípade sa mestá stanú kategóriami (potrebujete nájsť údaje podľa mesta), takže použijete dotaz na súčty.
Ak dotaz s najvyššími hodnotami použijete na vyhľadanie záznamov obsahujúcich najnovšie alebo najskoršie dátumy v tabuľke alebo skupine záznamov, môžete odpovedať na rôzne obchodné otázky, napríklad:
-
Kto v poslednej dobe najviac zvýrazňuje predaj?
-
Kedy zákazník naposledy zadal objednávku?
-
Kedy budú v tíme ďalšie tri narodeniny?
Ak chcete vytvoriť dotaz s najvyššou hodnotou, začnite vytvorením dotazu Select. Potom zoraďte údaje podľa svojej otázky – či už hľadáte hornú alebo dolnú časť. Ak potrebujete zoskupiť alebo sumarizovať údaje, zmeňte dotaz Select na dotaz súčtov. Potom môžete použiť agregačnú funkciu, ako napríklad Max alebo Min , na vrátenie najvyššej alebo najnižšej hodnoty, alebo prvú alebo poslednú na vrátenie najskoršieho alebo najneskoršieho dátumu.
Tento článok predpokladá, že hodnoty dátumu, ktoré používate, majú typ údajov Dátum a čas. Ak sa hodnoty dátumu nachádzajú v textovom poli, .
Zvážte použitie filtra namiesto dotazu s najvyššími hodnotami
Filter je zvyčajne lepší, ak máte na mysli konkrétny dátum. Ak chcete zistiť, či chcete vytvoriť dotaz s najvyššími hodnotami alebo použiť filter, zvážte nasledovné:
-
Ak chcete vrátiť všetky záznamy, v ktorých sa dátum zhoduje, je skorší alebo neskorší ako konkrétny dátum, použite filter. Ak chcete napríklad zobraziť dátumy predaja medzi aprílom a júlom, použite filter.
-
Ak chcete vrátiť zadané množstvo záznamov s najnovšími alebo najnovšími dátumami v poli a nepoznáte presné hodnoty dátumu alebo na nich nezáleží, vytvorte dotaz s najvyššími hodnotami. Ak chcete napríklad zobraziť päť najlepších predajných štvrťrokov, použite dotaz s najvyššími hodnotami.
Ďalšie informácie o vytváraní a používaní filtrov nájdete v článku Použitie filtra na zobrazenie vybraných záznamov v accessovej databáze.
Príprava vzorového údaja na sledovanie spolu s príkladmi
Kroky v tomto článku používajú údaje v nasledujúcich vzorových tabuľkách.
Tabuľka Zamestnanci
|
LastName |
Krstné meno |
Adresa |
Mesto |
Vidiecka alebo vidiecka egion |
Dátum narodenia |
Dátum nástupu |
|
Kollár |
Ľuboš |
Hlavná 1 |
Trebičany |
USA |
05. február 1968 |
10. jún 1994 |
|
Heloo |
Waleed |
Pekná 12 |
Trnov |
USA |
22. mája 1957 |
22. novembra 1996 |
|
Klčo |
Guido |
3122 75th Ave. S.W. |
Žiadar |
USA |
11. novembra 1960 |
11. marec 2000 |
|
Bagel |
Jean Philippe |
Višňová 14 |
Benkovce |
UK |
22. marec 1964 |
22. jún 1998 |
|
Cena |
Julian |
Stromová 2 |
Trebačov |
Mexiko |
05. jún 1972 |
05. január 2002 |
|
Hughes |
Christine |
3122, 75. |
Ždiar |
USA |
23. január 1970 |
23. apríl 1999 |
|
Rybárik |
Ján |
Osiková 12 |
Tichá Lomnica |
USA |
14. apríl 1964 |
14. október 2004 |
|
Birkby (Birkby) |
Dana |
2 Nosey Pkwy |
Liptovský Podzámok |
USA |
29. október 1959 |
29. marec 1997 |
Tabuľka Typ Udalosti
|
TypeID |
Typ udalosti |
|
1 |
Uvedenie produktu na trh |
|
2 |
Podniková funkcia |
|
3 |
Súkromná funkcia |
|
4 |
Dobročinný fond |
|
5 |
Veľtrh |
|
6 |
Prednáška |
|
7 |
Koncert |
|
8 |
Vystavovať |
|
9 |
Street Fair |
Tabuľka Zákazníci
|
ID zákazníka |
Spoločnosť |
Kontakt |
|
1 |
Contoso, Ltd. Grafika |
Jonathan Haas |
|
2 |
Drevené hračky |
Ellen Adamsová |
|
3 |
Fabrikam |
Carol Philips |
|
4 |
Wingtip Toys |
Lucio Iallo |
|
5 |
A. Dátum |
Mandar Samant |
|
6 |
Adventure Works |
Brian Burke |
|
7 |
Inštitút dizajnu |
Jaka Stele |
|
8 |
Škola výtvarného umenia |
Milena Duomanová |
Tabuľka Udalosti
|
EventID |
Typ udalosti |
Zákazník |
Dátum udalosti |
Cena |
|
1 |
Uvedenie produktu na trh |
Contoso, Ltd. |
4/14/2011 |
10 000 EUR |
|
2 |
Podniková funkcia |
Drevené hračky |
4/21/2011 |
8 000 EUR |
|
3 |
Veľtrh |
Drevené hračky |
5/1/2011 |
$25,000 |
|
4 |
Vystavovať |
Grafické štúdio |
5/13/2011 |
4 500 € |
|
5 |
Veľtrh |
Contoso, Ltd. |
5/14/2011 |
$55,000 |
|
6 |
Koncert |
Škola výtvarného umenia |
5/23/2011 |
12 000 EUR |
|
7 |
Uvedenie produktu na trh |
A. Dátum |
6/1/2011 |
15 000 EUR |
|
8 |
Uvedenie produktu na trh |
Wingtip Toys |
6/18/2011 |
21 000 EUR |
|
9 |
Dobročinný fond |
Adventure Works |
6/22/2011 |
1 300 EUR |
|
10 |
Prednáška |
Grafické štúdio |
6/25/2011 |
2 450 EUR |
|
11 |
Prednáška |
Contoso, Ltd. |
7/4/2011 |
3 800 EUR |
|
12 |
Street Fair |
Grafické štúdio |
7/4/2011 |
5 500 EUR |
Poznámka: Kroky v tejto časti predpokladajú, že tabuľky Customers a Event Type sa nachádzajú na strane "one" vzťahov "one-to-many" s tabuľkou Events. V tomto prípade tabuľka Events zdieľa polia CustomerID a TypeID. Dotazy súčtov popísané v nasledujúcich častiach nebudú bez týchto vzťahov fungovať.
Prilepenie vzorových údajov do excelových hárkov
-
Spustite program Excel. Otvorí sa prázdny zošit.
-
Stlačením kombinácie klávesov SHIFT + F11 vložte hárok (budete potrebovať štyri).
-
Skopírujte údaje z každej vzorovej tabuľky do prázdneho hárka. Zahrňte záhlavia stĺpcov (prvý riadok).
Vytvorenie databázových tabuliek z hárkov
-
Vyberte údaje z prvého hárka vrátane záhlaví stĺpcov.
-
Kliknite pravým tlačidlom myši na navigačnú tablu a potom kliknite na položku Prilepiť.
-
Kliknutím na tlačidlo Áno potvrďte, že prvý riadok obsahuje záhlavia stĺpcov.
-
Zopakujte kroky 1 až 3 pre každý zo zostávajúcich hárkov.
Vyhľadanie najnovšieho alebo najmenšieho dátumu
Kroky v tejto časti používajú vzorové údaje na znázornenie procesu vytvárania dotazu s najvyššími hodnotami.
Vytvorenie dotazu základných najvyšších hodnôt
-
Na karte Vytvoriť kliknite v skupine Dotazy na položku Návrh dotazu.
-
Dvakrát kliknite na tabuľku Zamestnanci a potom kliknite na tlačidlo Zavrieť.
Ak použijete vzorové údaje, pridajte do dotazu tabuľku Zamestnanci.
-
Pridajte polia, ktoré chcete použiť v dotaze, do mriežky návrhu. Môžete dvakrát kliknúť na každé pole alebo presunúť každé pole myšou do prázdnej bunky v riadku Pole .
Ak používate vzorové tabuľky, pridajte polia Meno, Priezvisko a Dátum narodenia.
-
V poli, ktoré obsahuje najvyššie alebo najnižšie hodnoty (pole Dátum narodenia, ak používate vzorová tabuľka), kliknite na riadok Zoradiť a vyberte položku Vzostupne alebo Zostupne.
Zostupné zoradenie vráti najnovší dátum a vzostupný spôsob zoradenia vráti najskorší dátum.
Dôležité: V riadku Zoradiť je nutné nastaviť hodnotu iba pre polia obsahujúce dátumy. Ak zadáte spôsob zoradenia pre iné pole, dotaz nevráti požadované výsledky.
-
Na karte Návrh kliknite v skupine Nástroje na šípku nadol vedľa položky Všetky (zoznam Horné hodnoty ) a zadajte požadovaný počet záznamov alebo vyberte niektorú z možností v zozname.
-
Kliknutím na položku Spustiť
spustite dotaz a zobrazte výsledky v údajovom zobrazení. -
Uložte dotaz ako NextBirthDays.
Môžete vidieť, že tento typ dotazu s najvyššími hodnotami dokáže odpovedať na základné otázky, napríklad kto je najstaršou alebo najmladšou osobou v spoločnosti. Ďalšie kroky vysvetľujú, ako používať výrazy a ďalšie kritériá na pridanie sily a flexibility dotazu. Kritériá uvedené v ďalšom kroku vrátia nasledujúce tri narodeniny zamestnancov.
Pridanie kritérií do dotazu
Tieto kroky používajú dotaz vytvorený v predchádzajúcom postupe. Dotaz s rôznymi najvyššími hodnotami môžete sledovať, pokiaľ obsahuje skutočné údaje dátumu a času, nie textové hodnoty.
Tip: Ak chcete lepšie pochopiť fungovanie tohto dotazu, v každom kroku môžete prepínať medzi návrhovým zobrazením a údajovým zobrazením. Ak chcete zobraziť skutočný kód dotazu, prepnite na zobrazenie SQL. Ak chcete prepínať medzi zobrazeniami, kliknite pravým tlačidlom myši na kartu v hornej časti dotazu a potom kliknite na požadované zobrazenie.
-
Na navigačnej table kliknite pravým tlačidlom myši na dotaz NextBirthDays a potom kliknite na položku Návrhové zobrazenie.
-
V mriežke návrhu dotazu zadajte do stĺpca napravo od stĺpca BirthDate nasledujúci:MonthBorn: DatePart("m";[DátumNarodenia]).Tento výraz extrahuje mesiac z DátumNarodenia pomocou funkcie DatePart .
-
Do ďalšieho stĺpca mriežky návrhu dotazu zadajte nasledujúci text:DayOfMonthBorn: DatePart("d";[DátumNarodenia])Tento výraz extrahuje deň v mesiaci z dátumu Narodenia pomocou funkcie DatePart .
-
Zrušte začiarknutie políčok v riadku Zobraziť pre každý z dvoch výrazov, ktoré ste práve zadali.
-
Kliknite na riadok Zoradiť pre každý výraz a potom vyberte položku Vzostupne.
-
Do riadka Kritériá v stĺpci Dátum narodenia zadajte nasledujúci výraz:Month([Dátum narodenia]) > Month(Date()) OR Month([Dátum narodenia])= Month(Date()) AND Day([Dátum narodenia])>Day(Date())Tento výraz vykoná nasledovné:
-
Month( [Dátum narodenia]) > Month(Date()) určuje, že dátum narodenia každého zamestnanca spadá do budúceho mesiaca.
-
Month( [Dátum narodenia])= Month(Date()) And Day([Dátum narodenia])>Day(Date()) určuje, že ak sa dátum narodenia vyskytne v aktuálnom mesiaci, narodeniny pripadajú na aktuálny deň alebo po ňom.
Stručne povedané, tento výraz vylúči všetky záznamy, v ktorých sa narodeniny vyskytujú medzi 1. januárom a aktuálnym dátumom.
Tip: Ďalšie príklady výrazov kritérií dotazu nájdete v článku Príklady kritérií dotazu.
-
-
Na karte Návrh v skupine Nastavenie dotazu zadajte do poľa Vráteniehodnotu 3.
-
Na karte Návrh kliknite v skupine Výsledky na položku Spustiť
.
Poznámka: Vo vlastnom dotaze s použitím vlastných údajov sa niekedy môže zobraziť viac záznamov, než ste zadali. Ak vaše údaje obsahujú viacero záznamov, ktoré zdieľajú hodnotu, ktorá patrí medzi najvyššie hodnoty, dotaz vráti všetky takéto záznamy, aj keď to znamená vrátenie viac záznamov, ako ste chceli.
Vyhľadanie najnovších alebo najmenej najnovších dátumov pre skupiny záznamov
Dotaz na súčty sa používa na vyhľadanie najskorších alebo najnovších dátumov pre záznamy, ktoré spadajú do skupín, ako sú napríklad udalosti zoskupené podľa mesta. Dotaz na súčty je dotaz Select, ktorý používa agregačné funkcie (napríklad Zoskupiť podľa, Min, Max, Počet, Prvý a Posledný) na výpočet hodnôt pre každé výstupné pole.
Zahrňte pole, ktoré chcete použiť pre kategórie , podľa ktorého chcete zoskupiť, a pole s hodnotami, ktoré chcete sumarizovať. Ak zahrniete ďalšie výstupné polia, napríklad mená zákazníkov pri zoskupovaní podľa typu udalosti, dotaz použije tieto polia aj na vytvorenie skupín, čím sa zmenia výsledky tak, aby neodpovedali na vašu pôvodnú otázku. Ak chcete označiť riadky pomocou iných polí, vytvorte ďalší dotaz, ktorý používa dotaz súčtov ako zdroj, a pridajte do dotazu ďalšie polia.
Tip: Vytváranie dotazov v krokoch je veľmi efektívnou stratégiou na odpovedanie na pokročilejšie otázky. Ak máte problémy s tým, aby zložitý dotaz fungoval, zvážte, či by ste ho mohli rozdeliť na rad jednoduchších dotazov.
Vytvorenie dotazu na súčty
V tomto postupe sa používa vzorová tabuľka Udalosti a vzorová tabuľka EventType na odpovedanie na túto otázku:
Kedy bola posledná udalosť každého typu podujatia okrem koncertov?
-
Na karte Vytvoriť kliknite v skupine Dotazy na položku Návrh dotazu.
-
Dvakrát kliknite na tabuľky Events a EventType. Každá tabuľka sa zobrazí v hornej časti návrhára dotazov.
-
Dvakrát kliknite na pole Typ Udalosti v tabuľke TypUdalosti a pole EventDate z tabuľky Events a pridajte polia do mriežky návrhu dotazu.
-
Do mriežky návrhu dotazu zadajte do riadka Kritériá poľa Typ Udalosti<>Koncert.
Tip: Ďalšie príklady výrazov kritérií nájdete v článku Príklady kritérií dotazu.
-
Na karte Návrh kliknite v skupine Zobraziť alebo skryť na položku Súčty.
-
V mriežke návrhu dotazu kliknite na riadok súčtu poľa DátumUdalosti a potom kliknite na položku Max.
-
Na karte Návrh v skupine Výsledky kliknite na položku Zobraziť a potom na položku Zobrazenie SQL.
-
V okne SQL na konci klauzuly SELECT hneď za kľúčovým slovom AS nahraďte hodnotu MaxOfEventDate hodnotou MostRecent.
-
Uložte dotaz ako MostRecentEventByType.
Vytvorenie druhého dotazu na pridanie ďalších údajov
Tento postup používa dotaz MostRecentEventByType z predchádzajúceho postupu na odpoveď na túto otázku:
Kto bol zákazníkom na najnovšej udalosti každého typu udalosti?
-
Na karte Vytvoriť kliknite v skupine Dotazy na položku Návrh dotazu.
-
Na karte Dotazy dvakrát kliknite na dotaz MostRecentEventByType.
-
Na karte Tabuľky dvakrát kliknite na tabuľku Udalosti a na tabuľku Zákazníci.
-
V návrhári dotazov dvakrát kliknite na nasledujúce polia:
-
V tabuľke Udalosti dvakrát kliknite na položku Typ Udalosti.
-
V dotaze MostRecentEventByType dvakrát kliknite na položku MostRecent.
-
V tabuľke Zákazníci dvakrát kliknite na položku Spoločnosť.
-
-
V mriežke návrhu dotazu v riadku Zoradiť v stĺpci TypUdalosti vyberte položku Vzostupne.
-
Prejdite na kartu Návrh a v skupine Výsledky kliknite na položku Spustiť.