Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Tehetséggondozás az informatikában – Adatbázis-kezelés / Lekérdezések /Csoportosítás, összesítő függvények

Lekérdezések

Választó lekérdezések

Csoportosítás, összesítő függvények

Sokszor szükség van arra, hogy az adatbázisban szereplő adatokat csoportosítva jelenítsük meg, és hozzá számoljunk is ki valamit. Az ilyen feladatok megoldására szolgálnak a QBE rács Összesítés sorában található összesítő függvények és záradékok. Az Összesítés sor alapértelmezetten nem látszik. Ahhoz, hogy bekapcsolhassuk, a Lekérdezéstervezőben a Tervezés fülön rá kell kattintanunk az Összesítés gombra.

A kép (nagyobb változata) külön ablakban is megtekinthető.16_full.jpg16. ábra: Az Összesítés sor bekapcsolása a QBE rács felületen

A megjelent Összesítés sorban ezután összesítő függvények és záradékok közül válogathatunk. Nézzük meg, melyik függvény vagy záradék mire szolgál!

Összesítő függvények:

Záradékok:

Megjegyzés

Ennek oka, hogy a QBE rács felület mögött SQL utasítások hajtódnak végre, ez pedig alapvető szabály egy SQL lekérdezés készítésekor.

Az összesítő függvények és a záradékok rövid áttekintése után nézzünk néhány példafeladatot!

OKTV 2003/2004. 2. forduló 3. feladat (Síkölcsönző) G részfeladat

Feladat

Ebben a feladatban egy olyan lekérdezést kell készíteni, ami kiszámolja, hogy egy ügyfélnek mennyit kell fizetnie a kölcsönzései után.

Példa

Javasolt megoldás:

Megoldási terv:

Elsőként el kell döntenünk, hogy mely táblákat kell felhasználnunk, majd miután ez megvan, hozzá kell adnunk a lekérdezéshez a megjelenítendő mezőket, valamint ki is kell számolnunk az ügyfél által fizetendő összeget. A számítás módjában segít a feladat is: a kölcsönzések darabszámát, időtartamát és a bérelt eszköztípusok árát kell felhasználni.

Javasolt megoldás lépései:

  • Kattintsunk a Létrehozás fülre, majd ott a Lekérdezéstervező gombra!
  • Mivel az ügyfelek nevére szükség van, ezért adjuk hozzá a lekérdezéshez az Ügyfél táblát! A kölcsönzés időtartama (Hány_hét) a Kölcsönzés, az eszköztípusok ára az Eszköztípus táblákban található, így ezeket is hozzá kell adnunk a lekérdezéshez. Ezeken kívül még az Eszköz táblára is szükségünk lesz. Ennek az az oka, hogy a Kölcsönzés és Eszköztípus táblák az Eszköz táblán keresztül vannak összekapcsolva, és ha kihagynánk a lekérdezésből, akkor megszűnne a két tábla közötti kapcsolat.
  • Adjuk hozzá a lekérdezéshez az Ügyfél tábla Név mezőjét!
  • Ezután kattintsunk a szalagon a Tervezés fülön az Összesítés gombra! Ezzel megjelenik az Összesítés sor a rácson.
  • A Név mezőnél állítsuk be az összesítéshez a Group by záradékot, hiszen ügyfelenként kell kiszámolnunk, hogy mennyit kell fizetniük.
  • Kattintsunk jobb egérgombbal a Név mező mellett található üres mezőbe, majd a legördülő menüben válasszuk ki a Szerkesztés menüpontot! Ezzel belépünk a Kifejezésszerkesztőbe, ahol létre tudunk hozni mindenféle számított mezőt.
  • Először is, adjunk a számított mezőnek nevet! Mivel az ügyfelenként fizetendő összeget kell kiszámítanunk, ezért legyen a mező neve az, hogy Összes_fizetendő. A szöveg után tegyünk kettőspontot (:), ez jelzi a rendszernek, hogy ez a szöveg lesz a számított mező neve.
  • A következő lépésben számoljuk ki, hogy egy ügyfél egy kölcsönzött termékért mennyit kell, hogy fizessen. Az adatbázisban nyilván van tartva, hogy egy heti kölcsönzésért mennyit kell fizetni (Heti_ár), valamint az is, hogy az ügyfél hány hétre kölcsönözte ki az adott terméket (Hány_hét). Ebből következik, hogy az egy termékért fizetendő összeg a Heti_ár és a Hány_hét mezők értékeinek szorzata.
  • Álljunk a kurzorral a mezőnév után, majd a Kifejezéselemek között tallózzunk rá az adatbázisfájlunk táblái között a Kölcsönzés táblára, majd a Kifejezéskategóriák között kattintsunk duplán a Hány_hét mezőre! Ekkor megjelenik a szerkesztőben a mező.
  • Gépeljünk utána egy csillag (*) karaktert – ez a szorzás operátor –, majd ismételjük meg az előző lépést, csak ezúttal az Eszköztípus tábla Heti_ár mezőjével tegyük ezt. Ha elkészültünk, akkor ezt kell látnunk a képernyőn:
A kép (nagyobb változata) külön ablakban is megtekinthető.18_full.jpg18. ábra: Az Összesen_fizetendő nevű számított mező elkészítésének első lépése
Megjegyzés

Felvetődhetne a kérdés, hogy a * miért szorzás operátorként viselkedik, ha korábban már láttuk, hogy a * egy helyettesítő karakter. Ez igaz, viszont jelen esetben nem a Like összehasonlító kifejezésben és nem is idézőjelek között – tehát szövegként – használjuk, hanem szám típusú mezők között.

  • Már csak annyit kell tennünk, hogy az egyes termékek kölcsönzési díját összeadjuk. Ehhez a Sum összesítő függvényt kell használnunk. Nyissuk meg a Kifejezéselemek között a Függvényeket, majd ott kattintsunk a Beépített függvényekre! Ezután a Kifejezésértékek között keressük meg a Sum függvényt, és kattintsunk rá duplán! Ekkor az általunk készített kifejezés után az alábbi kifejezést szúrja be a program: «Kif» Sum(«kifejezés»). Töröljük ki a Sum előtti «Kif» szöveget, majd jelöljük ki az általunk elkészített szorzat kifejezést, és vágjuk ki! Utána kattintsunk a zárójelek közötti «kifejezés» szövegre, majd illesszük be oda a szorzatot. Ha készen vagyunk, ezt kell látnunk:
A kép (nagyobb változata) külön ablakban is megtekinthető.19_full.jpg19. ábra: Az Összesen_fizetendő nevű számított mező elkészítés után
  • Ha ezzel megvagyunk, kattintsunk az Ok gombra a Kifejezésszerkesztőben! Ezzel visszatérünk a QBE rácshoz, és láthatjuk, hogy a lekérdezésünk immár két mezőt jelenít meg. Ha viszont most megpróbálnánk átváltani Adatlap nézetre, akkor az Access azzal a hibaüzenettel fogadna, hogy „Összesítő függvény nem alkalmazható GROUP BY záradékban.” Ezt úgy tudjuk megszüntetni, hogy az Összesen_fizetendő mező Összesítés sorában a Group by-t átállítjuk Expressionre. Ezt azért kell megtennünk, mert – mint ahogy azt korábban már tárgyaltuk – Expression záradékot kell használnunk minden olyan számított mezőnél, amely összesítő függvényt tartalmaz. Ez a számított mező pedig a Sum összesítő függvényt használja.
A kép (nagyobb változata) külön ablakban is megtekinthető.20_full.jpg20. ábra: A Síkölcsönző című feladat G részfeladatának megoldása tervező nézetben
  • Ha átállítottuk a záradékot, és átváltunk Adatlap nézetre, akkor a lekérdezés gond nélkül lefut, és ügyfelenként megjeleníti a fizetendő kölcsönzési díjat.

Ezzel pedig el is érkeztünk a részfeladat végéhez. Mentsük el a lekérdezést a megadott néven, és zárjuk be.

OKTV 2003/2004. 3. forduló 13. feladat (Jelentkezési adatbázis) F részfeladat

Feladat

A feladatban egyetlen lekérdezéssel kell meghatároznunk, hogy melyek azok a szobák, melyekben csak egy ember száll meg.

Példa

Javasolt megoldás:

Megoldási terv:

Mint már korábban, úgy itt is azzal kell kezdenünk, hogy meghatározzuk, mely táblákra lesz szükségünk az adatbázisból. Majd miután hozzáadtuk a lekérdezéshez, kiválasztjuk a szükséges mezőket, alkalmazzuk a megfelelő összesítő függvényt, és megfogalmazzuk a feltételeket.

Javasolt megoldás lépései:

  • Kattintsunk a Létrehozás fülre, majd itt a Lekérdezéstervező gombra!
  • A feladatot elolvasva láthatjuk, hogy két táblára lesz szükségünk: a tSzállásra, hiszen ebben vannak eltárolva az egyes szobák, és a tRésztvevőkre, mert ebben tároljuk, hogy az egyes résztvevők melyik szobában szállnak meg.
  • Adjuk hozzá a lekérdezéshez a tSzállás táblából az Épület és a Szobaszám mezőket, valamint a tRésztvevők táblából a Szállás mezőt.
  • Kattintsunk a szalagon az Összesítés gombra (Tervezés fül)!
  • Mivel arra vagyunk kíváncsiak, hogy mely szobákban szállt meg csak egy ember, ezért az Épület és Szobaszám mezőknél állítsuk be a Group by záradékot az Összesítés sorban. Így e szerint a két mező szerint lesznek csoportosítva az adatok.
  • Nincs más dolgunk, minthogy meghatározzuk, hányan laknak az egyes szobákban. A tRésztvevő tábla Szállás mezőjére alkalmazzuk a Count összesítő függvényt! Ez megszámolja, hogy az egyes szobákban hányan laknak.
  • Nekünk viszont arra van szükségünk, hogy csak azokat a szobákat adja vissza a lekérdezés eredményül, melyekben csak egy ember szállt meg. Ezért a Szállás mező feltétel sorába írjunk egy 1-est! Ha most átváltunk Adatlap nézetre, láthatjuk, hogy csak azok a szobák maradtak bent, melyekben csak egy személy szállt meg.
  • Viszont a feladat azt kérte, hogy csak a szobákat jelenítsük meg, a benne megszállók számát ne. Váltsunk vissza Tervező nézetre, és a Szállás mezőnél vegyük ki a pipát a Megjelenítés sorból! A lekérdezés most így néz ki:
A kép (nagyobb változata) külön ablakban is megtekinthető.21_full.jpg21. ábra: A Jelentkezési adatbázis című feladat F részfeladatának megoldása tervező nézetben
  • Zárjuk be a lekérdezést, és mentsük a megadott néven!

Ezzel kész is van a részfeladat.

OKTV 2005/2006. 3. forduló 10. feladat (Járatok) D részfeladat

Feladat

A feladatban egy olyan lekérdezést kell készítenünk, amely a járatok mellé kiírja az indulási és a végállomásra érkezési időt is. Fontos kikötés – és egyben könnyítés –, hogy nincs olyan járat, ami éjfélkor is közlekedne.

Példa

Javasolt megoldás lépései:

  • Készítsünk egy új lekérdezést a Létrehozás fülön lévő Lekérdezéstervező gombra kattintva!
  • Adjuk hozzá a lekérdezéshez a Menetrend táblát! A tábla Érkezés mezője tartalmazza, hogy az adott járat mikor érkezik meg az adott településre. A Járatszám mező pedig azonosítja az egyes járatokat.
  • Adjuk hozzá a lekérdezéshez a Járatszám mezőt, majd kétszer az Érkezés mezőt. Azért kell kétszer, mert az adott járatnál az Érkezés mezőben szereplő legkorábbi „érkezési” időpont lesz a járat indulási időpontja az egyik, míg a legkésőbbi időpont a járat érkezési időpontja a másik végállomásra.
  • Kapcsoljuk be a rácsfelületen az Összesítés sort (Tervezés fül, Összesítés gomb)!
  • Mivel járatonként kell meghatározni az indulási és érkezési időt, ezért a Járatazonosító mező Összesítés sorában állítsuk be a Group by záradékot!
  • Ezután határozzuk meg az egyes járatok indulási időpontjait az egyik végállomásról! Az első Érkezés mező Összesítés sorában állítsuk be a Min összesítő függvényt!
  • Nem maradt más hátra, minthogy meghatározzuk az egyes járatok érkezési időpontjait a másik végállomásukra. Állítsuk be a másik Érkezés mező Összesítés sorában a Max összesítő függvényt!
  • Bár a feladat nem kéri, azért, hogy a lekérdezés eredménye informatívabb legyen, célszerű lenne elnevezni azokat a mezőket, amelyeken a Min és Max összesítő függvényeket alkalmaztuk. Kattintsunk be az első Érkezés mezőnév elé, és gépeljük be azt, hogy Indulás, majd tegyünk utána kettőspontot (:). A kettőspont jelzi, hogy az előtte lévő szöveg lesz a mező neve. Tegyük meg ugyanezt a másik Érkezés mezőnél is, csak oda az Érkezés szöveget gépeljük be, és ne feledkezzünk meg utána a kettőspontról sem.
Megjegyzés

Alapesetben ugyanis a rendszer a következő elnevezést alkalmazza: <függvénynév>of<mezőnév>. A fenti példában ez úgy nézne ki, hogy MaxOfÉrkezés és MinOfÉrkezés.

Ha mindent jól csináltunk, akkor az alábbi képet kell látnunk a tervező nézetben:

A kép (nagyobb változata) külön ablakban is megtekinthető.22_full.jpg22. ábra: A Járatok című feladat D részfeladatának megoldása tervező nézetben

Ezzel pedig be is fejeztük a részfeladatot.

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.
Készült az "Országos koordinációval a pedagógusképzés megújításáért” című TÁMOP-4.1.2.B.2-13/1-2013-0007 pályázat keretében.

A tananyag az ELTESCORM keretrendszerrel készült