
Csöpi-filmek 2023_okt_középszint
Csöpi-filmek_2023_okt_középszint
Alább található az SQL feladatok megoldása a megadott követelmények alapján:
1. Adatbázis és táblák létrehozása
-- Lépjünk be az adatbázisba (ha már létezik, különben hibát dob)
CREATE DATABASE IF NOT EXISTS csopi;
USE csopi;
-- Film tábla létrehozása
CREATE TABLE film (
id INT PRIMARY KEY,
cim VARCHAR(255),
ev INT,
hossz INT
);
-- Szereplő tábla létrehozása
CREATE TABLE szereplo (
id INT PRIMARY KEY,
szinesz VARCHAR(255),
szerep VARCHAR(255)
);
-- Stáb tábla létrehozása
CREATE TABLE stab (
id INT PRIMARY KEY,
filmid INT,
szereploid INT,
FOREIGN KEY (filmid) REFERENCES film(id),
FOREIGN KEY (szereploid) REFERENCES szereplo(id)
);
-- Importálás a fájlokból (a fájlok útvonalát és a pontos paranccsorokat helyettesíteni kell)
LOAD DATA INFILE '/path/to/film.txt'
INTO TABLE film
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
LOAD DATA INFILE '/path/to/szereplo.txt'
INTO TABLE szereplo
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
LOAD DATA INFILE '/path/to/stab.txt'
INTO TABLE stab
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
2. Színészek, akik önmagukat játszották (2onmaga)
SELECT szinesz
FROM szereplo
WHERE szinesz = szerep;
3. Összes Csöpi-film hossza órákra váltva (3ora)
SELECT SUM(hossz) / 60 AS orak
FROM film;
4. Színészek és szereplők a "Hamis a baba" filmben (4hamis)
SELECT s.szinesz, s.szerep
FROM szereplo s
JOIN stab st ON s.id = st.szereploid
JOIN film f ON st.filmid = f.id
WHERE f.cim = 'Hamis a baba';
5. Színészek, akik több szerepet játszottak a Csöpi-filmekben (5tobbszor)
SELECT szinesz, COUNT(DISTINCT szerep) AS szerepek_szama
FROM szereplo s
JOIN stab st ON s.id = st.szereploid
GROUP BY szinesz
HAVING COUNT(DISTINCT szerep) > 1
ORDER BY szerepek_szama DESC;
6. Színészek, akik mind a hét Csöpi-filmben szerepeltek ugyanazzal a szereppel (6mindig)
SELECT szinesz, szerep
FROM szereplo s
JOIN stab st ON s.id = st.szereploid
JOIN film f ON st.filmid = f.id
GROUP BY szinesz, szerep
HAVING COUNT(DISTINCT f.id) = 7;