
Automegosztas
Automegosztas
Forrás:
https://informatika.fazekas.hu/erettsegi/kozepszintu-feladatok/
4. Automegosztás
🧱 1. Adatbázis létrehozása – automegosztas
A feladat Access‑ben szokott szerepelni, de az SQL‑típusok itt is egyértelműek.
Táblák helyes szerkezete
auto
CREATE TABLE auto (
id INT PRIMARY KEY,
rendszam VARCHAR(10) UNIQUE,
meghajtas VARCHAR(20),
uj BOOLEAN );
berles
CREATE TABLE berles (
id INT PRIMARY KEY,
autoid INT,
datum DATE,
tol TIME,
ig TIME,
tav DECIMAL(10,2),
FOREIGN KEY (autoid) REFERENCES auto(id) );
Az importálásnál a tabulátorral tagolt fájlok első sora a mezőneveket adja.
⚡ 2. Új, elektromos autók rendszámai
(2ujelektromos)
SELECT rendszam
FROM auto
WHERE uj = TRUE
AND meghajtas = 'elektromos';
🚨 3. 2018. június 20. 22:30‑kor szóba jöhető autók
(3baleset)
A keresett időpont: 22:30 Akkor jöhet szóba egy autó, ha:
éppen bérelték ekkor
vagy pont ekkor kezdődött
vagy pont ekkor ért véget
SELECT a.rendszam
FROM auto AS a
JOIN berles AS b ON a.id = b.autoid
WHERE b.datum = '2018-06-20'
AND ( (b.tol <= '22:30' AND b.ig >= '22:30')
OR b.tol = '22:30' OR b.ig = '22:30'
);
Ez a lekérdezés minden határesetet lefed, ahogy a feladat kéri.
📊 4. Autók összes megtett távolsága
(4osszesen)
SELECT a.rendszam,
SUM(b.tav) AS ossztav
FROM auto AS a
JOIN berles AS b ON a.id = b.autoid
GROUP BY a.rendszam
ORDER BY ossztav DESC;
A feladat szerint nem kell kerekíteni, ezért a SUM eredménye marad DECIMAL.
📅 5. Tesztüzem első és utolsó napja
(5hatarok)
SELECT MIN(datum) AS elso_nap,
MAX(datum) AS utolso_nap
FROM berles;
Ez a teljes bérlési időszakot adja meg.
🔌⚡ 6. Több elektromos vagy hibrid autó van?
(6tobb)
A feladat kéri, hogy akkor is működjön, ha más hajtástípusok is bekerülnek. Ezért csak a két vizsgált kategóriát számoljuk, és egyetlen szót adunk vissza.
SELECT
CASE
WHEN (SELECT COUNT(*) FROM auto WHERE meghajtas = 'elektromos')
>
(SELECT COUNT(*) FROM auto WHERE meghajtas = 'hibrid')
THEN 'elektromos'
ELSE 'hibrid'
END AS tobb;
