Kultúrtörténet (2023 október)
Kategória: sql - emelt szint
Feladat leírása

A 2018/19-es tanévben kultúrtörténeti versenyt szerveztek a középiskolásoknak. Minden
fordulóban egy-egy jelentős művész kapcsán kellett feladatokat megoldaniuk a tanulóknak.
A vetélkedés egész tanévben tartott, ahogy az egyik feladatsor beküldési határideje lejárt, szinte
azonnal kitűzték a következő forduló feladatait. Az értékelésbe beleszámított a megoldási idő
is, ezért a csapatok a feladatsor egy-egy megoldott feladatát azonnal beküldték. Minden csapat
minden feladatsorra küldött megoldást.
Az adatbázis a versennyel kapcsolatos következő táblákat tartalmazza:
Táblák:
feladatsor (id, nevado, ag, kituzes, hatarido)
id | A feladatsor azonosítója (szám), ez az elsődleges kulcs |
nevado | A feladatsor témáját adó személy neve (szöveg), nincs két azonos név A személy neve egy, két vagy három szóból áll, melyeket pontosan egy szóköz választ el egymástól |
ag | A művészeti ág, amelyhez a személy tartozik (szöveg) |
kituzes | A feladatsor kitűzési dátuma (dátum) |
hatarido | A feladatsor feladatainak beadási határideje (dátum) |
feladat (id, feladatsorid, pontszam)
id | A feladatsor egy feladatának azonosítója (szám), ez az elsődleges kulcs |
feladatsorid | A feladatsor azonosítója (szám), idegen kulcs |
pontszam | A feladatban elérhető pontszám (szám) |
megoldas (id, feladatid, csapatid, datum, pontszam)
id | A feladat egy megoldásának azonosítója (szám), ez az elsődleges kulcs |
feladatid | A megoldott feladat azonosítója (szám), idegen kulcs |
csapatid | A feladatot megoldó csapat azonosítója (szám), idegen kulcs |
datum | A megoldás beadási dátuma (dátum) |
pontszam | A megoldásra adott pontszám (szám) |
csapat (id, nev, tagszam)
id | A versenyre nevező csapat azonosítója (szám), ez az elsődleges kulcs |
nev | A csapat neve (szöveg), nincs két azonos nevű csapat |
tagszam | A csapat létszáma (szám) |
A következő feladatokat megoldó SQL-parancsokat rögzítse a feladatok végén zárójelben
megadott nevű és .sql kiterjesztésű szöveges állományba! Például a 3. feladat megoldása
a 3csakegy.sql nevű állományba kerüljön! A javítás során csak ezeknek az állományoknak
a tartalmát értékelik. Ügyeljen arra, hogy a lekérdezésekben pontosan a kívánt mezők
szerepeljenek, felesleges mezőt ne jelenítsen meg!
Az adatbázist és a táblákat létrehozó, és az adatokat a táblába beszúró SQL-parancsokat
a kulturforras.sql állomány tartalmazza
SQL-nyelven két dátum napokban kifejezett különbségét a Datediff függvénnyel lehet
meghatározni. Az alábbi példák mutatják használatát:
- Datediff('2020-12-02', '2020-12-01')
- Datediff('2019-01-04', '2018-12-31')
Az első esetben 1, a másodikban 4 a visszaadott érték. A következő feladatok megoldásánál
használhatja a Datediff() függvényt.
Részfeladatok
1. Futtassa az SQL-szerveren a kulturforras.sql parancsfájlt, és a továbbiakban a kulturtortenet adatbázisban dolgozzon! (A „Nincs kiválasztott adatbázis” üzenet nem befolyásolja az adatimportálás sikerességét.)
2. Lekérdezés segítségével írassa ki azon csapatok nevét, amelyek neve a # karakterrel kezdődik! (2csapatok)
3. A feladatsor táblát használva, lekérdezés segítségével jelenítse meg a feladatsor névadójának nevét, ha abban pontosan egy szóköz van! (3csakegy)
4. Készítsen lekérdezést, amely megadja, hogy ki a névadója a 2018. szilveszterkor aktív feladatsornak! (4szilveszter)
5. Készítsen lekérdezést, amely meghatározza a végeredményt! A csapatok neve és az általuk elért összpontszám jelenjen meg, utóbbi szerint csökkenő sorrendben! (5eredmeny)
6. Eredetileg úgy tervezték, hogy minden feladatsor 150 pontos lesz. Néhány esetben a kitűzés után kellett módosítani a feladatsoron, így ez nem valósult meg. Adja meg lekérdezéssel azokat a feladatsorokat, amelyek nem 150 pontosak! A feladatsor névadóját, a művészeti ágat és a pontszámot jelenítse meg! (6nem150)
7. Lekérdezés segítségével listázza ki azon csapatok nevét, amelyeknek volt maximális pontszámot érő feladata! Minden csapat neve egyszer jelenjen meg! (7hibatlan)
8. Bár a versenyzők lelkesek voltak és törekedtek minden feladatot megoldani, ennek ellenére előfordult, hogy nem minden feladatra adtak be megoldást. Készítsen lekérdezést, amely megadja, hogy a „#win” csapat mely feladatsorokból hány feladatot nem adott be! Jelenítse meg a feladatsor névadóját és a be nem adott feladatok számát! (8#win)
9. Készítsen lekérdezést, amely megadja, hogy az „irodalom” művészeti ághoz tartozó feladatsorok közül melyeket kellett ugyanabban a hónapban beadni, mint amikor kitűzték? Adja meg a feladatsorok névadóját! (9ugyanabban)
10. Lekérdezés segítségével adja meg, melyik feladatsor megoldására volt a legkevesebb idő! A feladatsor névadóját jelenítse meg! Ha több ilyen feladatsor van, elegendő az egyiket megadnia. (10legrovidebb)
11. Készítsen lekérdezést, amely megadja, hogy mely feladatoksorokat tűzték ki az előző beadási határidejét követő napon! A feladatsor névadóját és a kitűzés idejét jelenítse meg! A feladat megoldása során kihasználhatja, hogy egyszerre csak egy feladatsor volt aktív. (11rogton)