diff --git a/MTM/task4-straipsnis/straipsnis.md b/MTM/task4-straipsnis/straipsnis.md index 046e186..2908809 100644 --- a/MTM/task4-straipsnis/straipsnis.md +++ b/MTM/task4-straipsnis/straipsnis.md @@ -24,13 +24,13 @@ Susikurkime PostgreSQL lentelę su viso pasaulio oro uostais (bent tais, kurie turi [IATA kodą][1]) ir pažaiskime su duomenimis. Turėdami visus pasaulio oro uostus galime sugalvoti daug klausimų, bet man šiuo metu įdomu: - kokie du oro uostai yra labiausiai nutolę vienas nuo kito? -- kurie du oro uosta yra arčiausiai vienas kito? -- kiek kartų reikia nuskristi United Economy klase iš Vilniaus į San - Franciską ir atgal (pro Frankfurtą), kad uždirbčiau [nemokamus pusryčius][2] prieš - skrydį? +- kurie du oro uosta yra arčiausiai vienas kito? O toje pačioje šalyje? +- kokį atstumą skristume aplink žemę, jei iš Vilniaus skristume ta pačia platuma? +- kiek kartų reikia nuskristi United Economy klase aplink žemę Vilniaus + platumoje, kad uždirbtume [nemokamus pusryčius][2]? -Užduoties vykdymas ------------------- +Duomenų bazės sukūrimas +----------------------- Susidarys iš kelių dalių: - Duomenų bazės sukūrimas. @@ -45,6 +45,59 @@ jūsų patogumui yra šioje repositorijoje. Sukurkime ir importuokime duomenų b $ ./managedb init ``` +Sukūrėme duombazę su visais oro uostais; patikrinkime, kas viduje: + +``` +psql airportgames <<<" +SELECT + iata, + name, + to_char(st_y (geom), '999.99') AS latitude, + to_char(st_x (geom), '999.99') AS longitude, + to_char(st_z (geom), '9999') AS altitude +FROM + airports +WHERE + iata IN ('VNO', 'RIX', 'TLL'); +" + iata | name | latitude | longitude | altitude +------+-------------------------------+----------+-----------+---------- + TLL | Lennart Meri Tallinn Airport | 59.41 | 24.83 | 40 + RIX | Riga International Airport | 56.92 | 23.97 | 11 + VNO | Vilnius International Airport | 54.63 | 25.29 | 198 +``` + +Užklausos +--------- + +**Kokie oro uostai yra labiausiai nutolę vienas nuo kito?** + +Išrinkime 10 porų: + +``` +SELECT + a.country AS a_country, + a.name AS a_name, + a.iata AS a_iata, + b.country AS b_country, + b.name AS b_name, + b.iata AS b_iata, + to_char(st_distance (a.geom, b.geom, TRUE) / 1000, '99999.99') AS distance_km +FROM + airports a, + airports b +WHERE + a.gid > b.gid +ORDER BY + distance_km DESC +LIMIT 10; +``` + + +**Kurie du oro uosta yra arčiausiai vienas kito? O toje pačioje šalyje?** +**Kokį atstumą skristume aplink žemę, jei iš Vilniaus skristume ta pačia platuma?** +**Kiek kartų reikia nuskristi United Economy klase aplink žemę Vilniaus + platumoje, kad uždirbtume [nemokamus pusryčius][2]?** [1]: https://en.wikipedia.org/wiki/International_Air_Transport_Association_code