Advertisement
Guest User

Untitled

a guest
Apr 18th, 2018
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.86 KB | None | 0 0
  1. /* Zadanie 1 */
  2. SELECT *
  3. FROM
  4. (
  5. SELECT O.WOJEWODZTWO AS WOJEWODZTWO, S.KWOTA AS KWOTA, S.ROK AS ROK
  6. FROM ODDZIAL O JOIN PRACOWNIK P ON O.ID_ODDZIALU = P.ID_ODDZIALU JOIN SPRZEDAZ S ON S.ID_PRACOWNIKA = P.ID_PRACOWNIKA
  7. )
  8. PIVOT (
  9. MAX(KWOTA) FOR ROK IN (2010, 2011, 2012, 2013, 2014)
  10. );
  11.  
  12. /* Zadanie 2 */
  13. SELECT
  14.   o.panstwo,
  15.   s.miesiac,
  16.   s.rok,
  17.   SUM(s.kwota),
  18.   MAX(SUM(s.kwota)) OVER(PARTITION BY o.panstwo) - SUM(s.kwota),
  19.   MIN(SUM(s.kwota)) OVER(PARTITION BY o.panstwo) - SUM(s.kwota)
  20. FROM
  21.   oddzial o
  22.   JOIN pracownik p ON p.id_oddzialu=o.id_oddzialu
  23.   JOIN sprzedaz s ON s.id_pracownika=p.id_pracownika
  24. GROUP BY
  25.   o.panstwo, s.miesiac, s.rok
  26. ORDER BY o.panstwo
  27. ;
  28.  
  29. /* Zadanie 3 */
  30. SELECT
  31.   DECODE(o.panstwo, NULL, 'Sredni wiek w firmie', o.panstwo),
  32.   DECODE(o.wojewodztwo, NULL, 'Sredni wiek w kraju', o.wojewodztwo),
  33.   DECODE(o.nazwa, NULL, 'Sredni wiek w wojewodztwie', o.nazwa),
  34.   ROUND(avg(EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM p.data_urodzenia)), 2) as sredni_wiek
  35. FROM
  36.   Oddzial o
  37.   JOIN Pracownik p ON p.id_oddzialu=o.id_oddzialu
  38. GROUP BY GROUPING SETS((o.panstwo, o.wojewodztwo, o.nazwa), (o.panstwo, o.wojewodztwo), (o.panstwo), ())
  39. ;
  40.  
  41. /* Zadanie 4 */
  42. SELECT
  43.   tp.nazwa,
  44.   s.miesiac,
  45.   s.rok,
  46.   /* AVG(SUM(s.kwota)) OVER(PARTITION BY tp.nazwa ORDER BY tp.nazwa, s.rok ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), */
  47.   LAG(SUM(s.kwota),2) OVER(ORDER BY tp.nazwa, s.rok)
  48. FROM
  49.   typ_produktu tp
  50.   JOIN Sprzedaz s ON s.id_typu=tp.id_typu
  51. GROUP BY tp.nazwa, s.rok, s.miesiac
  52. ORDER BY tp.nazwa, s.rok
  53. ;
  54.  
  55. /* Zadanie 5 */
  56. SELECT
  57.   o.panstwo,
  58.   s.nazwa,
  59.   SUM(p.zarobki),
  60.   ROUND(RATIO_TO_REPORT(SUM(p.zarobki)) OVER (PARTITION BY o.panstwo)*100, 0) AS UDZIAL_PROCENTOWY
  61. FROM
  62.   Oddzial o
  63.   JOIN Pracownik p ON p.id_oddzialu=o.id_oddzialu
  64.   JOIN Stanowisko s ON s.id_stanowiska=p.id_stanowiska
  65. GROUP BY o.panstwo, s.nazwa
  66. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement