Az I. 422. feladat (2017. február) |
I. 422. A http://folyamhajo.hu folyamhajózási információs portálról minden olyan folyami kabinos személyhajóról (szállodahajó) jellemző adatokat ismerhetünk meg, mely az elmúlt évtizedekben legalább egyszer megfordult hazánkban. Az adatok a hajo.txt, a varos.txt és az allapot.txt állományokban állnak rendelkezésünkre. Az állományok tabulátorral tagolt, UTF-8 kódolású szövegfájlok, az első sorok a mezőneveket tartalmazzák.
1. Készítsünk új adatbázist regiszter néven. A mellékelt adatállományokat importáljuk az adatbázisba a fájlnévvel azonos hajo.txt, varos.txt és allapot.txt néven. Beolvasáskor állítsuk be a megfelelő adatformátumokat és kulcsokat. A táblákba ne vegyünk fel új mezőt.
Táblák
Készítsük el a következő feladatok megoldásait. Az egyes lekérdezéseknél ügyeljünk arra, hogy mindig csak a kért értékek jelenjenek meg és más adatok ne. Megoldásainkat a zárójelben lévő néven mentsük el.
2. Készítsünk lekérdezést, amely ábécérendben jeleníti meg a jelenleg is üzemelő személyhajók nevét. (2szemely)
3. Készítsünk lekérdezést, amely kilistázza a Viking Hajókirándulásnak, a dunai turisztikai célú hajózás meghatározó szereplőjének hajóit. Ezeknek a hajóknak a neve a ,,Viking'' szórészletet tartalmazza. (3viking)
4. Testvérhajónak nevezik azokat a hajókat, amelyeket ugyanabban az évben és országban gyártottak, valamint hosszúságuk, szélességük és merülésük is megegyezik. Soroljuk fel lekérdezés segítségével a ,,VIKING NEPTUNE'' testvérhajóit. (4neptune)
5. Lekérdezés segítségével adjuk meg, hogy melyik három európai városban regisztrálták a legtöbb hajót. (5kozpont)
6. Lekérdezés segítségével soroljuk fel azoknak az országoknak a betűjelét, ahol hajóregisztráció történt, de hajóépítő országként egy hajónál sincsenek megjelölve. (6konyveles)
7. Adjuk meg lekérdezés segítségével annak a hajónak, vagy hajóknak a nevét, amelynél teljes kihasználtság esetén a legnagyobb az egy utasra eső maximális teljesítmény. A teljes teljesítményt a motorszám és a névleges motorteljesítmény szorzataként számoljuk. (7eros)
8. Lekérdezés segítségével számoljuk meg, hogy az adatbázisban hány olyan hajó van, amelynek a maximális utasszáma az 50–99, a 100–149, a 150–199, illetve a 200–249 tartományokban van. (8kategoriak)
Beküldendő egy tömörített i422.zip állományban az adatbázis, valamint egy rövid dokumentáció, amelyből kiderül az alkalmazott adatbázis-kezelő neve és verziószáma.
Letölthető állományok: allapot.txt , hajo.txt , varos.txt .
(10 pont)
A beküldési határidő 2017. március 10-én LEJÁRT.
Megoldásokról:
A feladatra négy megoldás érkezett. Legérdekesebbnek a 6konyveles lekérdezés elkészítése mutatkozott.
A megoldásnak az a logikája, hogy két halmaz különbségét kell előállítani. A regisztráló országok közül azokat soroljuk fel, amelyek nincsenek benne a hajóépítő országok halmazában.
SELECT DISTINCT regor
FROM hajo
WHERE regor not in (SELECT orszag FROM hajo);
vagy
A hajo táblát két példányban vesszük fel és a kapcsolat bal illesztéssel az egyik regor és a másik orszag mezőjével történik. A LEFT JOIN-nal amikor összekapcsolunk két táblát és ha nincsen megfelelő érték az első helyen lévő táblában a második helyen lévő táblához, akkor kiegészíti azokat NILL értékekkel.
SELECT h1.regor
FROM hajo AS h1 LEFT JOIN hajo AS h2 ON h1.regor = h2.orszag
GROUP BY h1.regor, h2.orszag
HAVING h2.orszag Is Null;
vagy
SELECT Partition(utas,50,249,50) AS tarományok, Count(utas) AS utasok
FROM Hajo
GROUP BY Partition(utas,50,249,50);
Mintamegoldás:
Tersztenyák Balázs 9. osztályos tanuló Budapest, Kempelen Farkas Gimnázium megoldása: regiszter.accdb
Statisztika:
4 dolgozat érkezett. 10 pontot kapott: Kis Lázár Bence, Tersztenyák Balázs. 9 pontot kapott: Békési Péter, Horváth 237 Lili.
A KöMaL 2017. februári informatika feladatai