📊 SQL Analýza
Povinné SQL dopyty s JOIN, GROUP BY a ORDER BY podľa zadania.
📌 Dopyt 1 – Celkové náklady na cestovanie (trieda A, zostupne)
Celkové náklady = dĺžka km × cena za km pre všetky spoplatnené diaľnice triedy A.
SELECT r.road_code, s1.name AS start_city, s2.name AS end_city, r.length_km, r.toll_cost_eur_km, ROUND(r.length_km * r.toll_cost_eur_km, 2) AS total_cost_eur FROM road r JOIN settlement s1 ON s1.settlement_id = r.start_settlement JOIN settlement s2 ON s2.settlement_id = r.end_settlement WHERE r.road_class = 'A' AND r.toll_road = 1 AND r.toll_cost_eur_km IS NOT NULL GROUP BY r.road_id, r.road_code, s1.name, s2.name, r.length_km, r.toll_cost_eur_km ORDER BY total_cost_eur DESC;
| # | Kód cesty | Začiatok | Koniec | Dĺžka (km) | €/km | Celkom (€) |
|---|---|---|---|---|---|---|
| 1 | A1-HR | Zagreb | Klagenfurt | 480.20 | 0.0750 | 36.02 € |
| 2 | A1-AT | Wien | Salzburg | 295.80 | 0.1100 | 32.54 € |
| 3 | A1-RO | Timisoara | Zagreb | 550.30 | 0.0500 | 27.52 € |
| 4 | A3-RO | Cluj-Napoca | Oradea | 480.50 | 0.0500 | 24.03 € |
| 5 | A4-PL | Katowice | Krakow | 400.20 | 0.0600 | 24.01 € |
| 6 | A1-SI | Ljubljana | Klagenfurt | 250.30 | 0.0950 | 23.78 € |
| 7 | A2-AT | Wien | Graz | 215.60 | 0.1100 | 23.72 € |
| 8 | M3-HU | Budapest | Miskolc | 188.40 | 0.0980 | 18.46 € |
| 9 | M5-HU | Budapest | Timisoara | 160.20 | 0.0980 | 15.70 € |
| 10 | D2-CZ | Praha | Brno | 125.40 | 0.1200 | 15.05 € |
| 11 | A9-AT | Graz | Klagenfurt | 130.40 | 0.1100 | 14.34 € |
| 12 | D1-07 | Poprad | Presov | 97.40 | 0.1430 | 13.93 € |
| 13 | D1-02 | Trnava | Trencin | 85.30 | 0.1430 | 12.20 € |
| 14 | M1-HU | Budapest | Gyor | 120.50 | 0.0980 | 11.81 € |
| 15 | D1-03 | Trencin | Zilina | 80.10 | 0.1430 | 11.45 € |
| 16 | A1-PL | Katowice | Ostrava | 180.50 | 0.0600 | 10.83 € |
| 17 | A10-AT | Salzburg | Klagenfurt | 95.30 | 0.1100 | 10.48 € |
| 18 | D1-CZ | Brno | Ostrava | 86.30 | 0.1200 | 10.36 € |
| 19 | M7-HU | Budapest | Zagreb | 95.80 | 0.0980 | 9.39 € |
| 20 | D1-04 | Zilina | Martin | 63.50 | 0.1430 | 9.08 € |
| 21 | D2-01 | Bratislava | Komarno | 60.80 | 0.1430 | 8.69 € |
| 22 | D1-06 | Liptovsky Mikulas | Poprad | 55.30 | 0.1430 | 7.91 € |
| 23 | A2-HR | Zagreb | Varazdin | 100.40 | 0.0750 | 7.53 € |
| 24 | D1-01 | Bratislava | Trnava | 50.20 | 0.1430 | 7.18 € |
| 25 | A2-SI | Ljubljana | Graz | 75.40 | 0.0950 | 7.16 € |
| 26 | D1-05 | Martin | Liptovsky Mikulas | 48.20 | 0.1430 | 6.89 € |
| 27 | A1b-SI | Ljubljana | Maribor | 62.10 | 0.0950 | 5.90 € |
| 28 | D1-08 | Presov | Kosice | 35.10 | 0.1430 | 5.02 € |
| 29 | D3-01 | Bratislava | Senec | 30.50 | 0.1430 | 4.36 € |
Celkovo: 29 diaľničných úsekov triedy A ·
Suma:
415.34 €
📌 Dopyt 2 – Počet cestných spojení cez každé mesto (vzostupne)
Počet ciest začínajúcich ALEBO končiacich v každom meste.
SELECT s.name AS city, co.name AS country, COUNT(r.road_id) AS road_count FROM settlement s JOIN region rg ON rg.region_id = s.region_id JOIN country co ON co.country_id = rg.country_id JOIN road r ON r.start_settlement = s.settlement_id OR r.end_settlement = s.settlement_id GROUP BY s.settlement_id, s.name, co.name ORDER BY road_count ASC;
| # | Mesto / Sídlo | Krajina | Počet spojení | Vizualizácia |
|---|---|---|---|---|
| 1 | Michalovce | Slovakia | 1 | |
| 2 | Cakovec | Croatia | 1 | |
| 3 | Zakopane | Poland | 1 | |
| 4 | Celje | Slovenia | 1 | |
| 5 | Nowy Sacz | Poland | 1 | |
| 6 | Dresden | Germany | 1 | |
| 7 | Mukachevo | Ukraine | 1 | |
| 8 | Zlin | Czech Republic | 1 | |
| 9 | Holic | Slovakia | 1 | |
| 10 | Leipzig | Germany | 1 | |
| 11 | Nurnberg | Germany | 2 | |
| 12 | Dubnica nad Vahom | Slovakia | 2 | |
| 13 | Esztergom | Hungary | 2 | |
| 14 | Namestovo | Slovakia | 2 | |
| 15 | Martin | Slovakia | 2 | |
| 16 | Olomouc | Czech Republic | 2 | |
| 17 | Hlohovec | Slovakia | 2 | |
| 18 | Praha | Czech Republic | 2 | |
| 19 | Senica | Slovakia | 2 | |
| 20 | Varazdin | Croatia | 2 | |
| 21 | Cadca | Slovakia | 2 | |
| 22 | Munchen | Germany | 2 | |
| 23 | Oradea | Romania | 2 | |
| 24 | Komarom | Hungary | 2 | |
| 25 | Skalica | Slovakia | 2 | |
| 26 | Lviv | Ukraine | 2 | |
| 27 | Cluj-Napoca | Romania | 2 | |
| 28 | Miskolc | Hungary | 2 | |
| 29 | Maribor | Slovenia | 2 | |
| 30 | Katowice | Poland | 2 | |
| 31 | Malacky | Slovakia | 2 | |
| 32 | Surany | Slovakia | 3 | |
| 33 | Uzhhorod | Ukraine | 3 | |
| 34 | Timisoara | Romania | 3 | |
| 35 | Myjava | Slovakia | 3 | |
| 36 | Graz | Austria | 3 | |
| 37 | Dunajska Streda | Slovakia | 3 | |
| 38 | Levice | Slovakia | 3 | |
| 39 | Ljubljana | Slovenia | 3 | |
| 40 | Partizanske | Slovakia | 3 | |
| 41 | Kosice | Slovakia | 3 | |
| 42 | Modra | Slovakia | 3 | |
| 43 | Ilava | Slovakia | 3 | |
| 44 | Salzburg | Austria | 3 | |
| 45 | Piestany | Slovakia | 3 | |
| 46 | Komarno | Slovakia | 3 | |
| 47 | Ruzomberok | Slovakia | 3 | |
| 48 | Banovce nad Bebravou | Slovakia | 3 | |
| 49 | Pezinok | Slovakia | 4 | |
| 50 | Spisska Nova Ves | Slovakia | 4 | |
| 51 | Zagreb | Croatia | 4 | |
| 52 | Senec | Slovakia | 4 | |
| 53 | Zlate Moravce | Slovakia | 4 | |
| 54 | Gyor | Hungary | 4 | |
| 55 | Rzeszow | Poland | 4 | |
| 56 | Rimavska Sobota | Slovakia | 4 | |
| 57 | Wien | Austria | 4 | |
| 58 | Zilina | Slovakia | 4 | |
| 59 | Stupava | Slovakia | 4 | |
| 60 | Vrable | Slovakia | 4 | |
| 61 | Krakow | Poland | 4 | |
| 62 | Poprad | Slovakia | 4 | |
| 63 | Klagenfurt | Austria | 4 | |
| 64 | Sala | Slovakia | 4 | |
| 65 | Brno | Czech Republic | 4 | |
| 66 | Brezno | Slovakia | 4 | |
| 67 | Banska Bystrica | Slovakia | 5 | |
| 68 | Ostrava | Czech Republic | 5 | |
| 69 | Presov | Slovakia | 5 | |
| 70 | Zvolen | Slovakia | 5 | |
| 71 | Liptovsky Mikulas | Slovakia | 5 | |
| 72 | Trencin | Slovakia | 5 | |
| 73 | Lucenec | Slovakia | 5 | |
| 74 | Budapest | Hungary | 6 | |
| 75 | Trnava | Slovakia | 6 | |
| 76 | Nitra | Slovakia | 7 | |
| 77 | Bratislava | Slovakia | 9 |
📌 Dopyt 3 – Najdlhšie cestné spojenie v každej krajine (zostupne)
Pre každú krajinu vyberie cestné spojenie s maximálnou dĺžkou.
SELECT co.name AS country, r.road_code, s1.name AS start_city, s2.name AS end_city, r.length_km, r.road_class FROM road r JOIN settlement s1 ON s1.settlement_id = r.start_settlement JOIN settlement s2 ON s2.settlement_id = r.end_settlement JOIN region rg ON rg.region_id = s1.region_id JOIN country co ON co.country_id = rg.country_id WHERE r.length_km = ( SELECT MAX(r2.length_km) FROM road r2 JOIN settlement sx ON sx.settlement_id = r2.start_settlement JOIN region rx ON rx.region_id = sx.region_id WHERE rx.country_id = co.country_id ) GROUP BY co.country_id, co.name, r.road_id, r.road_code, s1.name, s2.name, r.length_km, r.road_class ORDER BY r.length_km DESC;
| # | Krajina | Kód cesty | Začiatok | Koniec | Dĺžka (km) | Trieda |
|---|---|---|---|---|---|---|
| 1 | Romania | A1-RO | Timisoara | Zagreb | 550.30 | A |
| 2 | Croatia | A1-HR | Zagreb | Klagenfurt | 480.20 | A |
| 3 | Poland | A4-PL | Katowice | Krakow | 400.20 | A |
| 4 | Ukraine | M06-UA | Lviv | Uzhhorod | 375.40 | B |
| 5 | Germany | A9-DE | Munchen | Nurnberg | 355.60 | A |
| 6 | Austria | A1-AT | Wien | Salzburg | 295.80 | A |
| 7 | Slovenia | A1-SI | Ljubljana | Klagenfurt | 250.30 | A |
| 8 | Hungary | M3-HU | Budapest | Miskolc | 188.40 | A |
| 9 | Czech Republic | D2-CZ | Praha | Brno | 125.40 | A |
| 10 | Slovakia | D1-07 | Poprad | Presov | 97.40 | A |