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) 
