wzee1

hajosema1zh.sql

Apr 9th, 2024
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.71 KB | None | 0 0
  1. -- 1. Keressük meg azokat a hajókat, amelyeknek a maximális konténerkapacitása meghaladja a 15-öt, és amelyek "It_Cat" kikötőbe tartanak.
  2.  
  3. SELECT DISTINCT h.nev,
  4.   h.max_kontener_dbszam, u.erkezesi_kikoto
  5. FROM hajo.s_hajo h JOIN hajo.s_ut u
  6. ON h.hajo_id = u.hajo
  7. WHERE h.max_kontener_dbszam > 15
  8.   AND u.erkezesi_kikoto = 'It_Cat';
  9.  
  10. -- 2. Határozzuk meg, hogy hány megrendelés van folyamatban (azaz még nem szállították ki őket).
  11.  
  12. SELECT COUNT(*) AS teljesitetlen_szallitas
  13. FROM (
  14.   SELECT erkezesi_ido FROM hajo.s_ut
  15.   WHERE erkezesi_ido IS NULL
  16. );
  17.  
  18. -- 3. Keressük meg azokat a hajókat, amelyeknek a maximális terhelhetősége meghaladja a 25 tonnát, és amelyeknek az indulási ideje 2021. április 6. után van.
  19.  
  20. SELECT h.nev, TO_CHAR(u.indulasi_ido, 'DS')
  21. FROM hajo.s_hajo h JOIN hajo.s_ut u
  22. ON h.hajo_id = u.hajo
  23. WHERE h.max_sulyterheles > 25
  24.   AND TO_CHAR(
  25.     u.indulasi_ido, 'DS'
  26.   ) > '2021.04.06';
  27.  
  28. -- 4. Jelenítsük meg a hajókat a maximális terhelhetőségük alapján csökkenő sorrendben.
  29.  
  30. SELECT nev, max_sulyterheles FROM hajo.s_hajo
  31. ORDER BY max_sulyterheles DESC;
  32.  
  33. -- 5. Határozzuk meg, hogy egy adott kikötőbe hány hajó érkezett 2021 júniusában.
  34.  
  35. SELECT k.kikoto_id, COUNT(*) AS beerkezett_hajo
  36. FROM hajo.s_ut u JOIN hajo.s_kikoto k
  37. ON u.erkezesi_kikoto = k.kikoto_id
  38. WHERE TO_CHAR(u.erkezesi_ido, 'YYYY.MM') = '2021.06'
  39. GROUP BY k.kikoto_id;
  40.  
  41. -- 6. Keressük meg azokat a megrendeléseket, amelyeket Melnik Nikolay ügyfél adott le, és amelyeknek az összértéke meghaladja a 500 000 eurót.
  42.  
  43. SELECT u.vezeteknev || ' ' || u.keresztnev AS megrendelo,
  44.        m.fizetett_osszeg
  45. FROM hajo.s_ugyfel u JOIN hajo.s_megrendeles m
  46. ON u.ugyfel_id = m.ugyfel
  47. WHERE u.vezeteknev = 'Melnik'
  48.   AND u.keresztnev = 'Nikolay'
  49.   AND m.fizetett_osszeg > 500000;
  50.  
  51. -- 7. Keressük meg azokat a hajókat, amelyek több konténert szállítottak összesen 2021-ben, mint a hajók átlagos konténer szállítási mennyiségének a tízezerszerese.
  52.  
  53. -- átlagos konténer szállítási mennyiség * 10000:
  54. SELECT AVG(rakomanysuly) * 10000 FROM hajo.s_szallit sz
  55. JOIN hajo.s_hozzarendel h USING(megrendeles);
  56.  
  57. -- 2021-ben szállított konténerek darabszáma összeadva és csoportosítva hajónként
  58. SELECT h.nev, SUM(h.kontener) FROM hajo.s_hajo h
  59.   JOIN hajo.s_ut u ON h.hajo_id = u.hajo
  60.   JOIN hajo.s_szallit sz ON u.ut_id = sz.ut
  61.   JOIN hajo.s_hozzarendel h USING(megrendeles)
  62. WHERE TO_CHAR(u.indulasi_ido, 'YYYY') = '2021'
  63. GROUP BY h.nev;
  64.  
  65. -- végleges:
  66. SELECT h.nev, SUM(h.kontener) AS szallitott_kontener_db
  67. FROM hajo.s_hajo h
  68.   JOIN hajo.s_ut u ON h.hajo_id = u.hajo
  69.   JOIN hajo.s_szallit sz ON u.ut_id = sz.ut
  70.   JOIN hajo.s_hozzarendel h USING(megrendeles)
  71. WHERE TO_CHAR(u.indulasi_ido, 'YYYY') = '2021'
  72. GROUP BY h.nev
  73.   HAVING SUM(h.kontener) > (
  74.     SELECT AVG(rakomanysuly) * 10000 FROM hajo.s_szallit sz
  75.     JOIN hajo.s_hozzarendel h USING(megrendeles);
  76.   );
  77.  
  78.  
  79. -- 8. Számítsuk ki, hogy egy adott hajó átlagosan mennyi időt tölt egy út során.
  80.  
  81. SELECT h.nev, ROUND(AVG(
  82.   (u.erkezesi_ido - u.indulasi_ido) * 24
  83. ), 2) AS vizen_toltott_atlag_nap
  84. FROM hajo.s_hajo h
  85. JOIN hajo.s_ut u ON h.hajo_id = u.hajo
  86. GROUP BY h.nev;
  87.  
  88. -- 9. Keressük meg azokat a kikötőket, amelyekből nem indult hajó 2021. január 1. és 2021. március 31. között.
  89.  
  90. SELECT DISTINCT k.kikoto_id
  91. FROM hajo.s_kikoto k
  92. LEFT JOIN hajo.s_ut u
  93. ON k.kikoto_id = u.indulasi_kikoto
  94. WHERE u.indulasi_ido IS NULL;
  95.  
  96. -- 10. Határozzuk meg, hogy melyik hajó szállította a legtöbb konténert 2023-ban.
  97.  
  98. SELECT h.nev FROM hajo.s_hajo h
  99.   JOIN hajo.s_ut u ON h.hajo_id = u.hajo
  100.   JOIN hajo.s_szallit sz ON u.ut_id = sz.ut
  101.   JOIN hajo.s_hozzarendel h USING(megrendeles)
  102. GROUP BY h.nev
  103. ORDER BY SUM(h.kontener) DESC
  104. FETCH FIRST ROW ONLY;
  105.  
  106.  
  107.  
  108. -- RÉGI ZH (bshit)
  109.  
  110. -- 1. feladat:
  111.  
  112. SELECT DISTINCT u.vezeteknev || ' ' || u.keresztnev AS nev
  113. FROM hajo.s_ugyfel u
  114. JOIN hajo.s_helyseg h
  115. ON u.helyseg = h.helyseg_id
  116. WHERE h.orszag = 'Olaszország';
  117.  
  118. -- 2. feladat: ?????
  119.  
  120. SELECT h.helyseg_id, h.orszag, h.helysegnev
  121. FROM hajo.s_helyseg h JOIN hajo.s_ugyfel u
  122. ON h.helyseg_id = u.helyseg
  123. ORDER BY orszag, helysegnev;
  124.  
  125. -- 3. feladat
  126.  
  127. SELECT u.ut_id, sz.kontener FROM hajo.s_ut u
  128. JOIN hajo.s_szallit sz ON u.ut_id = sz.ut
  129. WHERE u.indulasi_kikoto = 'It_Cat'
  130.   AND sz.kontener >= 1
  131. ORDER BY sz.kontener
  132. FETCH FIRST 4 ROW ONLY;
  133.  
  134.  
  135. -- 2022-es zh:
  136.  
  137. -- 1. feladat
  138.  
  139. SELECT megrendeles, kontener,
  140.        ROUND(rakomanysuly, 2) AS rakomanysuly
  141. FROM hajo.s_hozzarendel
  142. ORDER BY rakomanysuly;
  143.  
  144. -- 2. feladat
  145.  
  146. SELECT * FROM hajo.s_kikoto
  147. WHERE leiras LIKE '%kikötőméret: kicsi%mobil daruk%'
  148.   OR leiras LIKE '%mobil daruk%kikötőméret: kicsi%';
  149.  
  150. -- 3. feladat
  151.  
  152. SELECT ut_id, hajo, indulasi_kikoto, erkezesi_kikoto,
  153.        TO_CHAR(indulasi_ido, 'YYYY.MM.DD HH:MI:SS') AS indulasi_ido,
  154.        TO_CHAR(erkezesi_ido, 'YYYY.MM.DD HH:MI:SS') AS erkezesi_ido
  155. FROM hajo.s_ut
  156. WHERE TO_CHAR(indulasi_ido, 'SS') <> 0
  157. ORDER BY indulasi_ido;
  158.  
  159. -- 4. feladat
  160.  
  161. SELECT ht.nev, COUNT(*) AS db
  162. FROM hajo.s_hajo_tipus ht
  163. JOIN hajo.s_hajo h
  164.   ON ht.hajo_tipus_id = h.hajo_tipus
  165. WHERE h.max_sulyterheles > 500
  166. GROUP BY ht.nev;
  167.  
  168. -- 5. feladat
  169.  
  170. SELECT TO_CHAR(megrendeles_datuma, 'YYYY.MM') AS datum,
  171.        COUNT(*) AS db
  172. FROM hajo.s_megrendeles
  173. GROUP BY TO_CHAR(megrendeles_datuma, 'YYYY.MM')
  174. HAVING COUNT(*) >= 6;
  175.  
  176. -- 6. feladat
  177.  
  178. SELECT u.vezeteknev || ' ' || u.keresztnev AS nev,
  179.        u.telefon
  180. FROM hajo.s_ugyfel u
  181. JOIN hajo.s_helyseg h
  182.   ON u.helyseg = h.helyseg_id
  183. WHERE orszag = 'Szíria';
  184.  
  185. -- 7. feladat
  186.  
  187. SELECT ht.nev, MIN(h.netto_suly) AS legkisebb_suly
  188. FROM hajo.s_hajo_tipus ht JOIN hajo.s_hajo h
  189. ON ht.hajo_tipus_id = h.hajo_tipus
  190. GROUP BY ht.nev;
  191.  
  192. -- 8. feladat
  193.  
  194. SELECT o.orszag, h.helysegnev
  195. FROM hajo.s_orszag o
  196. JOIN hajo.s_helyseg h
  197.   ON o.orszag = h.orszag
  198. JOIN hajo.s_kikoto k
  199.   ON h.helyseg_id = k.helyseg
  200. WHERE o.foldresz = 'Ázsia'
  201. ORDER BY o.orszag, h.helysegnev;
  202.  
  203. -- 9. feladat
  204.  
  205. SELECT h.nev, h.hajo_id, u.indulasi_kikoto,
  206.        u.erkezesi_kikoto, u.indulasi_ido
  207. FROM hajo.s_hajo h JOIN hajo.s_ut u
  208.   ON h.hajo_id = u.hajo
  209. ORDER BY u.indulasi_ido DESC;
  210.  
  211. -- 10. feladat
  212.  
  213. SELECT u.erkezesi_kikoto, h.helysegnev, orszag
  214. FROM hajo.s_ut u
  215. JOIN hajo.s_kikoto k
  216.   ON u.indulasi_kikoto = k.kikoto_id
  217. JOIN hajo.s_helyseg h
  218.   ON k.helyseg = h.helyseg_id
  219. JOIN hajo.s_orszag USING(orszag)
  220. WHERE k.kikoto_id = 'It_Cat'
  221. ORDER BY u.indulasi_ido;
  222.  
  223.  
  224. -- ZH mittomén mikori
  225.  
  226. -- 1. feladat
  227.  
  228. SELECT hr.megrendeles, hr.kontener,
  229.        ROUND(hr.rakomanysuly, 2) AS suly
  230. FROM hajo.s_hozzarendel hr
  231. WHERE hr.rakomanysuly BETWEEN 7 AND 14
  232. ORDER BY rakomanysuly DESC;
  233.  
  234. -- 2. feladat
  235.  
  236. SELECT vezeteknev || ', ' || keresztnev AS nev
  237. FROM hajo.s_ugyfel
  238. WHERE helyseg IS NULL
  239.   AND keresztnev LIKE '_____';
  240.  
  241. -- 3. feladat
  242.  
  243. SELECT TO_CHAR(
  244.     megrendeles_datuma, 'YYYY.MM.DD HH:MI:SS'
  245.   ) AS megrendeles_datuma,
  246.   indulasi_kikoto, erkezesi_kikoto,
  247.   fizetett_osszeg
  248. FROM hajo.s_megrendeles
  249. WHERE TO_CHAR(
  250.   megrendeles_datuma, 'YYYY.MM'
  251. ) IN ('2021.02', '2021.04')
  252. ORDER BY fizetett_osszeg;
  253.  
  254. -- 4. feladat
  255.  
  256. SELECT foldresz,
  257.        SUM(terulet) AS ossz_terulet
  258. FROM hajo.s_orszag
  259. WHERE foldresz IS NOT NULL
  260. GROUP BY foldresz
  261. ORDER BY SUM(terulet) DESC;
  262.  
  263. -- 5. feladat
  264.  
  265. SELECT u.ugyfel_id,
  266.        SUM(m.fizetett_osszeg) AS ossz_rendeles
  267. FROM hajo.s_ugyfel u
  268. JOIN hajo.s_megrendeles m
  269.   ON u.ugyfel_id = m.ugyfel
  270. GROUP BY u.ugyfel_id;
  271.  
  272. -- 6. feladat
  273.  
  274. SELECT DISTINCT ht.nev
  275. FROM hajo.s_hajo_tipus ht
  276. JOIN hajo.s_hajo h
  277.   ON ht.hajo_tipus_id = h.hajo_tipus;
  278.  
  279. -- 7. feladat
  280.  
  281. SELECT TO_CHAR(
  282.     megrendeles_datuma, 'YYYY.MM'
  283.   ) AS megrendeles_datuma,
  284.   COUNT(*) AS leadott_megrendelesek
  285. FROM hajo.s_megrendeles m
  286. JOIN hajo.s_kikoto k
  287.   ON m.erkezesi_kikoto = k.kikoto_id
  288. WHERE k.leiras LIKE '%mobil daruk%'
  289. GROUP BY TO_CHAR(megrendeles_datuma, 'YYYY.MM');
  290.  
  291. -- 8. feladat
  292.  
  293. SELECT DISTINCT megrendeles
  294. FROM hajo.s_hajo h
  295. JOIN hajo.s_ut u
  296.   ON h.hajo_id = u.hajo
  297. JOIN hajo.s_szallit sz
  298.   ON u.ut_id = sz.ut
  299. JOIN hajo.s_hozzarendel hr
  300.   USING(megrendeles)
  301. WHERE h.nev = 'Asterix'
  302.   AND u.erkezesi_kikoto = 'It_Cat';
  303.  
  304. -- 9. feladat
  305.  
  306. SELECT m.megrendeles_id, TO_CHAR(
  307.          m.megrendeles_datuma, 'DS HH:MI:SS'
  308.        ) AS megrendeles_ideje,
  309.        m.indulasi_kikoto, m.erkezesi_kikoto,
  310.        u.vezeteknev || ' ' || u.keresztnev AS nev
  311. FROM hajo.s_megrendeles m
  312. JOIN hajo.s_ugyfel u
  313.   ON m.ugyfel = u.ugyfel_id;
  314.  
  315. -- 10. feladat
  316.  
  317. SELECT u.vezeteknev || ' ' || u.keresztnev AS nev,
  318.        TO_CHAR(szul_dat, 'DS') AS szul_dat,
  319.        FLOOR((sysdate - szul_dat) / 365) AS eletkor
  320. FROM hajo.s_helyseg h
  321. JOIN hajo.s_ugyfel u
  322.   ON h.helyseg_id = u.helyseg
  323. WHERE h.orszag = 'Olaszország'
  324. ORDER BY eletkor DESC
  325. FETCH FIRST ROW WITH TIES;
  326.  
Advertisement
Add Comment
Please, Sign In to add comment