Adatbáziskezelés (Papírgyűjtés)
Papírgyűjtés
Az adatbázis létrehozásához és feltöltéséhez használjuk az alábbi két állományt:
Egy általános iskolában 2016 októberében papírgyűjtést hirdettek.
A tanulók hétfőnként, szerdánként és péntekenként adhatták le a gyűjtött papírt.
A papírgyűjtés adatait egy adatbázisban rögzítették.
A következő feladatokban a papírgyűjtés eredményeit tartalmazó adatbázissal kell dolgoznia.
Az adatbázis a következő táblákat tartalmazza:
tanulok (tazon, nev, osztaly)
tazon Egész szám, a tanuló azonosítója, PK
nev Szöveg, a tanuló neve
osztaly Szöveg, a tanuló osztálya
leadasok (sorsz, tanulo, idopont, mennyiseg)
sorsz Egész szám, a leadás sorszáma, PK
tanulo Egész szám, a tanuló azonosítója, FK
idopont Dátum, a leadás időpontja
mennyiseg Egész szám, a leadott papír mennyisége dkg-ban mérve
Az elsődleges kulcsokat PK-val, az idegenkulcsokat FK-val jelöltük.
Az adattáblák közti kapcsolatot az alábbi ábra mutatja:
1. Hozzon létre a lokális SQL szerveren papirgyujtes néven adatbázist! Az adatbázis
alapértelmezett rendezési sorrendje a magyar szabályok szerinti legyen! Ha az Ön által
választott SQL szervernél nem alapértelmezés az UTF-8 kódolás, akkor azt is állítsa be
alapértelmezettnek az adatbázis létrehozásánál! (1. feladat:)
2. A tablak.sql és az adatok.sql állományok tartalmazzák a táblákat létrehozó,
valamint az adatokat a táblába beszúró SQL parancsokat! Futassa a lokális SQL
szerveren elsőként a tablak.sql, majd az adatok.sql parancsfájlt!
3. Készítsen lekérdezést, amely megadja, hogy az első osztályos tanulók mikor és mennyi
papírt adtak le a gyűjtési időszakban! A lekérdezésben a tanuló neve, osztálya, a leadás
időpontja és a leadott papírmennyiség jelenjen meg! (3. feladat:)
4. Listázza ki, hogy az átvételre megjelölt napokon átlagosan mennyi papírt adtak le! A
számított mező címkéje „napi atlag” legyen! (4. feladat:)
5. Készítsen lekérdezést, amely kilistázza, mely osztályokból adtak le papírt
2016. október 28-án! A listában minden osztály azonosítója csak egyszer szerepeljen
növekvő sorrendben! (5. feladat:)
6. Készítsen lekérdezést, amely megadja, hogy osztályonként hány mázsa papírt
gyűjtöttek a tanulók (1 mázsa = 10000 dkg)! Az eredményt rendezze a gyűjtött
mennyiség szerint csökkenő rendbe! (6. feladat:)
megadja ezen tanulók nevét, osztályát és azt, hogy mekkora mennyiségű papírt
gyűjtöttek! Az eredményt rendezze a gyűjtött mennyiség szerint csökkenő rendbe!
(7. feladat:)
Megoldás:
1. feladat:
CREATE DATABASE papirgyujtes
DEFAULT CHARACTER SET utf8
COLLATE utf8_hungarian_ci;
3. feladat:
SELECT nev, osztaly, idopont, mennyiseg
FROM tanulok INNER JOIN leadasok ON leadasok.tanulo = tanulok.tazon
WHERE osztaly LIKE '1%';
4. feladat:
SELECT idopont, avg(mennyiseg) AS 'napi atlag'
FROM leadasok
GROUP BY idopont;
GROUP BY idopont;
5. feladat:
DISTINCT osztaly
FROM tanulok INNER JOIN leadasok ON tanulok.tazon=leadasok.tanulo
WHERE idopont='2016.10.28'
ORDER BY osztaly;
6. feladat:
SELECT osztaly, sum(mennyiseg)/10000 AS mazsa
FROM tanulok INNER JOIN leadasok ON tanulok.tazon=leadasok.tanulo
GROUP BY osztaly
ORDER BY mazsa DESC;
7. feladat:
SELECT nev, osztaly, sum(mennyiseg) AS osszesen
FROM tanulok INNER JOIN leadasok ON tanulok.tazon=leadasok.tanulo
GROUP BY nev, osztaly
ORDER BY osszesen DESC
LIMIT 10
Megjegyzések
Megjegyzés küldése