Ez a cikk bemutatja, hogyan használhatja a leggyakoribb értékeket tartalmazó lekérdezéseket és összesítő lekérdezéseket egy rekordhalmaz legutóbbi vagy legkorábbi dátumainak megkereséséhez. Ez számos üzleti kérdés megválaszolásában segíthet, például amikor egy ügyfél utoljára adott le rendelést, vagy hogy melyik öt negyedév volt a legjobb az értékesítéshez városonként.
Tartalom
Áttekintés
Az adatokat rangsorolhatja, és áttekintheti a legmagasabban rangsorolt elemeket a legfelső értékek lekérdezésével. A legfelső értékű lekérdezés egy választó lekérdezés, amely az értékek megadott számát vagy százalékát adja vissza az eredmények tetejéről, például egy webhely öt legnépszerűbb lapjáról. A felső értékek lekérdezését bármilyen értékhez használhatja– nem kell számnak lenniük.
Ha rangsorolás előtt szeretné csoportosítani vagy összegezni az adatokat, akkor nem kell felső értékeket tartalmazó lekérdezést használnia. Tegyük fel például, hogy meg kell keresnie egy adott dátum értékesítési számát minden olyan városhoz, ahol a vállalat működik. Ebben az esetben a városok kategóriákká válnak (meg kell keresnie a városonkénti adatokat), ezért összeg lekérdezést kell használnia.
Ha a legfelső értékeket tartalmazó lekérdezéssel olyan rekordokat keres, amelyek egy táblában vagy rekordcsoportban a legújabb vagy legkorábbi dátumokat tartalmazzák, számos üzleti kérdésre válaszolhat, például az alábbiakra:
-
Ki volt a legtöbb értékesítés az utóbbi időben?
-
Mikor adott le utoljára rendelést egy ügyfél?
-
Mikor lesz a következő három születésnap a csapatban?
Felső értékű lekérdezés létrehozásához először hozzon létre egy választó lekérdezést. Ezután rendezze az adatokat a kérdésének megfelelően – akár a felsőt, akár az alsót keresi. Ha csoportosítania vagy összegeznie kell az adatokat, a választó lekérdezést összegző lekérdezéssé alakíthatja. Ezután egy összesítő függvényt használhat, például a Max vagy a Min függvényt a legmagasabb vagy legalacsonyabb érték visszaadásához, illetve az Első vagy az Utolsó függvényt a legkorábbi vagy a legújabb dátum visszaadásához.
Ez a cikk feltételezi, hogy a használt dátumértékek dátum/idő adattípussal rendelkeznek. Ha a dátumértékek szövegmezőben vannak, akkor.
Érdemes lehet szűrőt használni a felső értékek lekérdezése helyett
Egy szűrő általában jobb, ha egy adott dátumot szem előtt tart. Annak meghatározásához, hogy létre kell-e hoznia egy felső értékeket tartalmazó lekérdezést, vagy szűrőt kell alkalmaznia, vegye figyelembe a következőket:
-
Ha az összes olyan rekordot szeretné visszaadni, ahol a dátum egyezik, egy adott dátumnál korábbi vagy későbbi, használjon szűrőt. Például az április és július közötti értékesítések dátumainak megtekintéséhez szűrőt kell alkalmaznia.
-
Ha olyan rekordmennyiséget szeretne visszaadni, amely egy mezőben a legutóbbi vagy a legújabb dátummal rendelkezik, és nem ismeri a pontos dátumértékeket, vagy nem számít, akkor hozzon létre egy felső értékeket tartalmazó lekérdezést. Az öt legjobb értékesítési negyedév megtekintéséhez például használjon egy felső értékeket tartalmazó lekérdezést.
A szűrők létrehozásával és használatával kapcsolatos további információkért lásd: Szűrő alkalmazása a kijelölt rekordok access-adatbázisban való megtekintéséhez.
Mintaadatok előkészítése a példákkal együtt
A cikkben ismertetett lépések az alábbi mintatáblákban szereplő adatokat használják.
Az Alkalmazottak tábla
|
LastName |
Utónév |
Cím |
Város |
CountryOrR egion |
Születési dátum |
Felvétel dátuma |
|
Barkóczi |
Barkóczi |
Fő út 1. |
Győr |
USA |
1968. február 5. |
1994. június 10. |
|
Heloo |
Waleed |
Petőfi utca 5. |
Nagykanizsa |
USA |
1957. május 22. |
1996. nov. 22. |
|
Pozsony |
Guido |
3122 75. Ave. S.W. |
Kecskemét |
USA |
1960. nov. 11. |
2000. március 11. |
|
Bagel |
Jean Philippe |
Berkenye sgt. 1. |
Debrecen |
UK |
1964. március 22. |
1998. június 22. |
|
Ár |
Julian |
Orgona utca 2. |
Szolnok |
Mexikó |
1972. június 5. |
2002. január 5. |
|
Hughes |
Christine |
3122 75th St. S. |
Kecskemét |
USA |
1970. január 23. |
1999. ápr. 23. |
|
Szabolcs |
Deák |
Lejtő utca 67. |
Eger |
USA |
1964. április 14. |
2004. október 14. |
|
Birkby |
Dana |
2 Nosey Pkwy |
Pécs |
USA |
1959. október 29. |
1997. március 29. |
Az EventType tábla
|
TypeID |
Esemény típusa |
|
1 |
Termékbevezetés |
|
2 |
Vállalati függvény |
|
3 |
Privát függvény |
|
4 |
Alapbeemelő |
|
5 |
Trade Show |
|
6 |
Előadás |
|
7 |
Koncert |
|
8 |
Kiállít |
|
9 |
Utcai vásár |
A Vevők tábla:
|
Ügyfél-azonosító |
Cég |
Kapcsolattartó |
|
1 |
Contoso, Ltd. Ábra |
Jonathan Haas |
|
2 |
Dejójáték Kft. |
Ellen Adams |
|
3 |
Fabrikam |
Carol Philips |
|
4 |
Wingtip Toys |
Lucio Iallo |
|
5 |
A. Kitűző jel |
Mandar Samant |
|
6 |
Adventure Works |
Brian Burke |
|
7 |
Design Institute |
Jaka Stele |
|
8 |
Képzőművészeti Iskola |
Milena Duomanova |
Az Események tábla
|
EventID (Eseményazonosító) |
Esemény típusa |
Vevő |
Esemény dátuma |
Ár |
|
1 |
Termékbevezetés |
Contoso, Ltd. |
4/14/2011 |
1 000 000 Ft |
|
2 |
Vállalati függvény |
Dejójáték Kft. |
4/21/2011 |
800 000 Ft |
|
3 |
Trade Show |
Dejójáték Kft. |
2011.05.01. |
25 000 USD |
|
4 |
Kiállít |
Általános Tervezőintézet |
5/13/2011 |
4500 USD |
|
5 |
Trade Show |
Contoso, Ltd. |
5/14/2011 |
55 000 USD |
|
6 |
Koncert |
Képzőművészeti Iskola |
5/23/2011 |
1 200 000 Ft |
|
7 |
Termékbevezetés |
A. Kitűző jel |
6/1/2011 |
1 500 000 Ft |
|
8 |
Termékbevezetés |
Wingtip Toys |
6/18/2011 |
2 100 000 Ft |
|
9 |
Alapbeemelő |
Adventure Works |
6/22/2011 |
1300 USD |
|
10 |
Előadás |
Általános Tervezőintézet |
6/25/2011 |
2450 USD |
|
11 |
Előadás |
Contoso, Ltd. |
2011.07.04. |
3800 USD |
|
12 |
Utcai vásár |
Általános Tervezőintézet |
2011.07.04. |
550 000 Ft |
Megjegyzés: A szakasz lépései feltételezik, hogy az Ügyfelek és az Eseménytípus táblák az Egy-a-többhöz kapcsolatok "egy" oldalán találhatók az Events táblával. Ebben az esetben az Events tábla a CustomerID és TypeID mezőket osztja meg. A következő szakaszokban ismertetett összesítő lekérdezések nem működnek e kapcsolatok nélkül.
Mintaadatok beillesztése Excel-munkalapokra
-
Indítsa el az Excelt. Megnyílik egy üres munkafüzet.
-
Munkalap beszúrásához nyomja le a SHIFT+F11 billentyűkombinációt (négyre lesz szüksége).
-
Másolja az adatokat az egyes mintatáblákból egy üres munkalapra. Foglalja bele az oszlopfejléceket (az első sort).
Adatbázistáblák létrehozása a munkafüzetekből
-
Jelölje ki az első munkalap adatait, beleértve az oszlopfejléceket is.
-
Kattintson a jobb gombbal a navigációs ablakra, majd kattintson a Beillesztés parancsra.
-
Kattintson az Igen gombra annak ellenőrzéséhez, hogy az első sor tartalmaz-e oszlopfejléceket.
-
Ismételje meg az 1–3. lépést minden többi munkalapon.
A legutóbbi dátum megkeresése
Az ebben a szakaszban ismertetett lépések a mintaadatok segítségével szemléltetik a legfelső értékek lekérdezésének létrehozásának folyamatát.
Alapszintű legfelső értékeket tartalmazó lekérdezés létrehozása
-
Kattintson a Létrehozás lap Lekérdezések csoportjának Lekérdezéstervező gombjára.
-
Kattintson duplán az Employees (Alkalmazottak) táblára, majd kattintson a Close (Bezárás) gombra.
Ha a mintaadatokat használja, adja hozzá az Employees táblát a lekérdezéshez.
-
Adja hozzá a lekérdezésben használni kívánt mezőket a tervezőrácshoz. Kattintson duplán az egyes mezőkre, vagy húzza az egyes mezőket a Mező sor üres cellájába.
Ha a mintatáblát használja, adja hozzá az Utónév, a Vezetéknév és a Születési dátum mezőt.
-
A felső vagy alsó értékeket tartalmazó mezőben (ha a mintatáblát használja, a Születési dátum mezőben) kattintson a Rendezés sorra, és válassza a Növekvő vagy a Csökkenő lehetőséget.
A csökkenő rendezési sorrend a legutóbbi dátumot, a növekvő rendezési sorrend pedig a legkorábbi dátumot adja vissza.
Fontos: Csak a dátumokat tartalmazó mezőkhöz kell értéket beállítania a Rendezés sorban. Ha egy másik mezőhöz rendezési sorrendet ad meg, a lekérdezés nem a kívánt eredményeket adja vissza.
-
A Tervezés lap Eszközök csoportjában kattintson az Összes elem melletti lefelé mutató nyílra (a leggyakoribb értékek listájára), és adja meg a megtekinteni kívánt rekordok számát, vagy válasszon egy lehetőséget a listából.
-
A lekérdezés futtatásához és az eredmények Adatlap nézetben való megjelenítéséhez kattintson a
futtatása gombra. -
Mentse a lekérdezést NextBirthDays néven.
Láthatja, hogy az ilyen típusú felső értékek lekérdezése képes megválaszolni az alapszintű kérdéseket, például hogy ki a vállalat legidősebb vagy legfiatalabb személye. A következő lépések azt mutatják be, hogyan használhat kifejezéseket és más feltételeket a lekérdezéshez való teljesítmény és rugalmasság hozzáadásához. A következő lépésben látható feltételek a következő három alkalmazotti születésnapot adják vissza.
Feltétel hozzáadása a lekérdezéshez
Ezek a lépések az előző eljárásban létrehozott lekérdezést használják. Egy másik felső értékeket tartalmazó lekérdezést is követhet, ha az tényleges dátum-/időadatokat tartalmaz, nem szöveges értékeket.
Tipp: Ha jobban meg szeretné érteni a lekérdezés működését, váltson a Tervező nézet és az Adatlap nézet között minden lépésben. Ha meg szeretné tekinteni a tényleges lekérdezési kódot, váltson SQL-nézetre. A nézetek közötti váltáshoz kattintson a jobb gombbal a lekérdezés tetején található fülre, majd kattintson a kívánt nézetre.
-
A navigációs ablakban kattintson a jobb gombbal a NextBirthDays lekérdezésre, majd kattintson a Tervező nézet parancsra.
-
A lekérdezéstervező rács BirthDate jobb oldalán található oszlopba írja be a következőt:MonthBorn: DatePart("m",[BirthDate]).Ez a kifejezés kinyeri a hónapot a BirthDate függvényből a DatePart függvénnyel.
-
A lekérdezéstervező rács következő oszlopába írja be a következőt:DayOfMonthBorn: DatePart("d",[BirthDate])Ez a kifejezés a DatePart függvénnyel nyeri ki a hónap napját a BirthDate függvényből.
-
Törölje a jelet a Két beírt kifejezés megjelenítése sor jelölőnégyzetéből.
-
Kattintson az egyes kifejezések Rendezés sorára, majd válassza a Növekvő lehetőséget.
-
A Születési dátum oszlop Feltétel sorában írja be a következő kifejezést:Month([Birth Date]) > Month(Date()) OR Month([Birth Date])= Month(Date()) AND Day([Birth Date])>Day(Date())Ez a kifejezés a következőket teszi:
-
Month( [Születési dátum]) > Month(Date()) azt határozza meg, hogy az egyes alkalmazottak születési dátuma egy jövőbeli hónapba esik.
-
A Month([Születési dátum])= Month(Date()) And Day([Születési dátum])>Day(Date()) azt adja meg, hogy ha a születési dátum az aktuális hónapban következik be, a születésnap az aktuális napra esik vagy azt követően.
Röviden, ez a kifejezés nem tartalmazza azokat a rekordokat, ahol a születésnap január 1. és az aktuális dátum között történik.
Tipp: A lekérdezési feltételek kifejezésére további példákat a Példák lekérdezési feltételekre című cikkben talál.
-
-
A Tervezés lap Lekérdezés beállítása csoportjában írja be a 3 értéket a Return mezőbe.
-
A Tervezés lap Eredmények csoportjában kattintson a Futtatás
gombra.
Megjegyzés: Előfordulhat, hogy a saját adatait használó saját lekérdezésében a megadottnál több rekord jelenik meg. Ha az adatok több olyan rekordot tartalmaznak, amelyek a legfelső értékek között szerepelnek, a lekérdezés akkor is visszaadja az összes ilyen rekordot, ha az azt jelenti, hogy a kívántnál több rekordot ad vissza.
Rekordcsoportok legutóbbi vagy legutóbbi dátumainak megkeresése
Az összesítő lekérdezéssel megkeresheti a csoportokba tartozó rekordok legkorábbi vagy legkésőbbi dátumait, például a város szerint csoportosított eseményeket. Az összegző lekérdezés olyan választó lekérdezés, amely összesítő függvényeket (például Csoportosítási szempont, Min, Max, Darabszám, Első és Utolsó) használ az egyes kimeneti mezők értékeinek kiszámításához.
Adja meg a kategóriákhoz használni kívánt mezőt – csoportosításhoz – és az összesíteni kívánt értékeket tartalmazó mezőt. Ha más kimeneti mezőket is megad , például az ügyfelek nevét, amikor eseménytípus szerint csoportosít, a lekérdezés ezeket a mezőket is használja a csoportok létrehozásához, és módosítja az eredményeket, hogy ne válaszoljanak az eredeti kérdésre. Ha más mezőkkel szeretné címkézni a sorokat, hozzon létre egy további lekérdezést, amely az összegző lekérdezést használja forrásként, és adja hozzá a további mezőket a lekérdezéshez.
Tipp: A lekérdezések lépésekben történő létrehozása nagyon hatékony stratégia a speciálisabb kérdések megválaszolására. Ha problémába ütközik egy bonyolult lekérdezés beolvasása során, fontolja meg, hogy fel tudja-e bontani egyszerűbb lekérdezések sorozatára.
Összegző lekérdezés létrehozása
Ez az eljárás az Események mintatáblát és az EventType mintatáblát használja a kérdés megválaszolásához:
Mikor volt az egyes eseménytípusok legutóbbi eseménye, a koncertek kivételével?
-
Kattintson a Létrehozás lap Lekérdezések csoportjának Lekérdezéstervező gombjára.
-
Kattintson duplán az Események és az EventType táblákra. Minden tábla megjelenik a lekérdezéstervező felső szakaszában.
-
Kattintson duplán az EventType tábla EventType mezőjére és az EventDate mezőre az Események táblából, hogy a mezőket hozzáadja a lekérdezés tervezőrácsához.
-
A lekérdezés tervezőrácsában az EventType mező Feltétel sorába írja be <>Koncert kifejezést.
Tipp: A feltételkifejezésekre további példákat a Példák lekérdezési feltételekre című cikkben talál.
-
Kattintson a Tervezés lap Megjelenítés/elrejtés csoportjának Összesítés gombjára.
-
A lekérdezéstervező rácsban kattintson az EventDate mező Összeg sorára, majd a Max gombra.
-
Kattintson a Tervezés lap Eredmények csoportjának Nézet gombjára, majd az SQL nézet parancsra.
-
Az SQL-ablakban a SELECT záradék végén, közvetlenül az AS kulcsszó után cserélje le a MaxOfEventDate kifejezést a MostRecent értékre.
-
Mentse a lekérdezést MostRecentEventByType néven.
Második lekérdezés létrehozása további adatok hozzáadásához
Ez az eljárás az előző eljárás MostRecentEventByType lekérdezését használja a kérdés megválaszolásához:
Ki volt az ügyfél az egyes eseménytípusok legutóbbi eseményén?
-
Kattintson a Létrehozás lap Lekérdezések csoportjának Lekérdezéstervező gombjára.
-
A Lekérdezések lapon kattintson duplán a MostRecentEventByType lekérdezésre.
-
A Táblák lapon kattintson duplán az Események és a Vevők táblára.
-
A lekérdezéstervezőben kattintson duplán a következő mezőkre:
-
Az Események táblában kattintson duplán az EventType elemre.
-
A MostRecentEventByType lekérdezésben kattintson duplán a MostRecent elemre.
-
A Customers (Ügyfelek) táblában kattintson duplán a Company (Vállalat) elemre.
-
-
A lekérdezéstervező rács EventType oszlopának Rendezés sorában válassza a Növekvő lehetőséget.
-
A Tervezés lap Eredmények csoportjában kattintson a Futtatás gombra.