Adatbázisfájl
A következő feladatokhoz az alábbi adatbázisra lesz szükség:
A következő feladatokhoz az alábbi adatbázisra lesz szükség:
Ellenőrizd le, hogy sikerült-e a Varosok, Egyetemek és Szemelyek táblák létrehozása és feltöltése!
Listázd ki az összes várost!
select * from Varosok;
Listázd ki az összes egyetemet!
select * from Egyetemek;
Listázd ki az összes személyt!
select * from Szemelyek;
Oldja meg a következő feladatokat!
-- 1. Listázza ki azokat a személyeket, akik 1980 után születtek!
SELECT * FROM Szemelyek WHERE szuletesiDatum > TO_DATE('1980 12 31','yyyy mm dd');
-- 2. Listázza ki azon a személyek nevét és életkorát, akik 1980 után, de 1990 előtt születtek!
SELECT nev, EXTRACT(YEAR FROM sysdate)-EXTRACT(YEAR FROM Szemelyek.szuletesidatum) AS eletkor
FROM Szemelyek WHERE szuletesiDatum > TO_DATE('1980 12 31','yyyy mm dd') AND TO_DATE('1990 12 31','yyyy mm dd') > szuletesiDatum;
-- 3. Listázza ki a nem magyarországi személyeket!
SELECT * FROM Szemelyek WHERE not orszag = 'Magyarorszag';
-- 4. Számolja meg, hogy hány magyarországi folyómenti város szerepel az adatbázisban!
SELECT COUNT(*) FROM Varosok WHERE folyomentie = 1 AND orszag = 'Magyarország';
-- 5. Listázza ki a városok számát ország szerint csoportosítva, az ország neve szerint fordított ABC sorrendben.
SELECT orszag, COUNT(nev) FROM Varosok GROUP BY orszag ORDER BY orszag DESC;
-- 6. Listázza ki azon személyek nevét és városát, akik folyómenti városban élnek.
SELECT Szemelyek.nev AS nev, Varosok.nev AS varos FROM Szemelyek, Varosok WHERE Szemelyek.irsz = Varosok.irsz AND Szemelyek.orszag = Varosok.orszag AND folyomentie = 1;
-- 7. Listázza ki, hogy városok szerint hány ember szerepel az adatbázisban.
SELECT Varosok.nev AS varos, COUNT(Varosok.nev) AS lakos FROM Szemelyek, Varosok WHERE Szemelyek.irsz = Varosok.irsz AND Szemelyek.orszag = Varosok.orszag GROUP BY Varosok.nev;
-- 8. Listázza ki az átlag életkort városok szerint csoportosítva.
SELECT Varosok.nev AS varos, EXTRACT(YEAR FROM sysdate)-avg(EXTRACT(YEAR FROM Szemelyek.szuletesidatum)) AS lakos
FROM Szemelyek, Varosok WHERE Szemelyek.irsz = Varosok.irsz AND Szemelyek.orszag = Varosok.orszag GROUP BY Varosok.nev;
-- 9. Listázza ki a legöregebb személy nevét, életkorát és a várost, amelyben lakik.
SELECT Szemelyek.nev, EXTRACT(YEAR FROM sysdate)-EXTRACT(YEAR FROM Szemelyek.szuletesidatum) AS eletkor, Varosok.nev
FROM Szemelyek, Varosok WHERE Szemelyek.irsz = Varosok.irsz AND Szemelyek.orszag = Varosok.orszag AND
(SELECT MIN(Szemelyek.szuletesidatum) FROM Szemelyek, Varosok WHERE Szemelyek.irsz = Varosok.irsz AND Szemelyek.orszag = Varosok.orszag) = Szemelyek.szuletesidatum;
-- 10. Listázza ki a különböző országok adatbázisban szereplő lakosainak átlagéletkorát azok körében, akik idősebbek 20 évnél.
SELECT Varosok.orszag AS orszag, EXTRACT(YEAR FROM sysdate)-avg(EXTRACT(YEAR FROM Szemelyek.szuletesidatum)) AS lakos
FROM Szemelyek, Varosok WHERE Szemelyek.irsz = Varosok.irsz AND Szemelyek.orszag = Varosok.orszag AND
EXTRACT(YEAR FROM sysdate)-EXTRACT(YEAR FROM Szemelyek.szuletesidatum) > 20 GROUP BY Varosok.orszag;
-- 11. Sándorfalván fürdő épült, ezért az adatbázis elavultá vált, javitsa ezt ki!
update Varosok set furdovane= 1 WHERE nev = 'Sándorfalva';
-- 12. Töröljön minden Tatai lakost.
delete FROM Szemelyek WHERE Szemelyek.irsz = (SELECT Varosok.irsz FROM Varosok WHERE Varosok.nev = 'Tata') AND
Szemelyek.orszag = (SELECT Varosok.orszag FROM Varosok WHERE Varosok.nev = 'Tata');
-- 13. Listázza azon személyeket, akik nevében szerepel a '3' részlet
SELECT Szemelyek.nev FROM Szemelyek WHERE Szemelyek.nev LIKE '%3%';
-- 14. Listázza ki a magyarországi Egyetemeken tanulók halgatók számat egyetemenként csoportosítva.
SELECT Egyetemek.nev AS egyetem, COUNT(Egyetemek.rovidites) AS hallgato FROM Szemelyek, Egyetemek
WHERE Szemelyek.hallgatoe = Egyetemek.rovidites GROUP BY Egyetemek.nev;
-- 15. Írassa ki a legidősebb budapesti lakos nevét és életkorát, aki budapesti egyetem hallgatója!
SELECT Szemelyek.nev, EXTRACT(YEAR FROM sysdate)-EXTRACT(YEAR FROM Szemelyek.szuletesidatum) AS eletkor FROM Szemelyek, Varosok, Egyetemek WHERE
Szemelyek.irsz = Varosok.irsz AND Szemelyek.orszag = Varosok.orszag AND Szemelyek. hallgatoe = Egyetemek.rovidites AND
(SELECT MIN(Szemelyek.szuletesidatum) FROM Szemelyek, Varosok WHERE Szemelyek.irsz = (SELECT Varosok.irsz FROM Varosok WHERE Varosok.nev = 'Budapest') AND
Szemelyek.orszag = (SELECT Varosok.orszag FROM Varosok WHERE Varosok.nev = 'Budapest')) = Szemelyek.szuletesidatum AND
(SELECT Varosok.irsz FROM Varosok WHERE Varosok.nev = 'Budapest') = Egyetemek.irsz AND (SELECT Varosok.orszag FROM Varosok WHERE Varosok.nev = 'Budapest') = Egyetemek.orszag;
Licensed under the Creative Commons Attribution Share Alike License 4.0