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:)


7. A legtöbb papírt gyűjtő 10 tanuló jutalomban részesül. Készítsen lekérdezést, amely
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

Népszerű bejegyzések ezen a blogon

Ágazati alapvizsga (Programozás)

Ágazati alap vizsga (WEB)

HTML + CSS (elmélet+gyakrolat)