-
Notifications
You must be signed in to change notification settings - Fork 0
/
Zapytania analityczne.sql
163 lines (136 loc) · 10.4 KB
/
Zapytania analityczne.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
--1. ROLLUP
SELECT NVL(TO_CHAR(ZLECENIE.TYP_ZLECENIA_ID_TYPU),' ') AS "TYP ZLECENIA", NVL(TO_CHAR(ZLECENIE.CZAS_TRWANIA),' ') AS "CZAS TRWANIA", TO_CHAR(ROUND(AVG(ZLECENIE.CENA_USLUGI),2))||'ZŁ' AS "CENA USLUGI",
TO_CHAR(ROUND(AVG(ZLECENIE.KOSZT_MATERIALOW),2))||'ZŁ' AS "KOSZT MATERIALU", TO_CHAR(ROUND(AVG(ZLECENIE.ZYSK),2))||'ZŁ' AS "ZYSK"
FROM ZLECENIE
GROUP BY ROLLUP(ZLECENIE.TYP_ZLECENIA_ID_TYPU,ZLECENIE.CZAS_TRWANIA);
--2. ROLLUP
SELECT NVL(TO_CHAR(ZLECENIE.PRACOWNIK_ID_PRACOWNIKA),' ') AS "ID PRACOWNIKA", NVL(TO_CHAR(ZLECENIE.TYP_ZLECENIA_ID_TYPU),' ') AS "TYP ZLECENIA",
NVL(TO_CHAR(ZLECENIE.CZAS_TRWANIA),' ') AS "CZAS TRWANIA", ROUND(COUNT(ZLECENIE.ID_ZLECENIA),0) AS "ILOSC ZLECEN", TO_CHAR(ROUND(SUM(ZLECENIE.KOSZT_MATERIALOW),2))||'ZŁ' AS "KOSZT MATERIALOW", TO_CHAR(ROUND(SUM(ZLECENIE.ZYSK),2))||'ZŁ' AS "ZYSK"
FROM ZLECENIE
GROUP BY ROLLUP(ZLECENIE.PRACOWNIK_ID_PRACOWNIKA,ZLECENIE.TYP_ZLECENIA_ID_TYPU,ZLECENIE.CZAS_TRWANIA);
--3. CUBE
SELECT NVL(TO_CHAR(ZLECENIE.PRACOWNIK_ID_PRACOWNIKA),' ') AS "ID PRACOWNIKA", NVL(TO_CHAR(ZLECENIE.TYP_ZLECENIA_ID_TYPU),' ') AS "TYP ZLECENIA",
NVL(TO_CHAR(ZLECENIE.CZAS_TRWANIA),' ') AS "CZAS TRWANIA", ROUND(COUNT(ZLECENIE.KLIENT_ID_KLIENTA),0) AS "ILOSC KLIENTOW",
TO_CHAR(ROUND(AVG(ZLECENIE.ZYSK),2))||' ZŁ' AS "SREDNI ZYSK", TO_CHAR(ROUND(SUM(ZLECENIE.ZYSK),2))||' ZŁ' AS "SUMA ZYSKU"
FROM ZLECENIE
GROUP BY CUBE(ZLECENIE.PRACOWNIK_ID_PRACOWNIKA, ZLECENIE.TYP_ZLECENIA_ID_TYPU, ZLECENIE.CZAS_TRWANIA);
--4. CUBE
SELECT NVL(TO_CHAR(ZLECENIE.KLIENT_ID_KLIENTA),' ') AS "ID KLIENTA", NVL(TO_CHAR(ZLECENIE.TYP_ZLECENIA_ID_TYPU),' ') AS "TYP ZLECENIA",
ROUND(COUNT(ZLECENIE.ID_ZLECENIA),0) AS "ILOSC ZLECEN", TO_CHAR(ROUND(SUM(ZLECENIE.ZYSK),0))||' ZŁ' AS "ZYSK"
FROM ZLECENIE
GROUP BY CUBE(ZLECENIE.KLIENT_ID_KLIENTA,ZLECENIE.TYP_ZLECENIA_ID_TYPU);
--5. GROUPING SETS
SELECT NVL(TO_CHAR(ZLECENIE.KLIENT_ID_KLIENTA),' ') AS "ID KLIENTA" , NVL(TO_CHAR(ZLECENIE.CZAS_TRWANIA),' ') AS "CZAS TRWANIA", NVL(TO_CHAR(ZLECENIE.TYP_ZLECENIA_ID_TYPU),' ') AS "TYP USLUGI",
NVL(TO_CHAR(ZLECENIE.PRACOWNIK_ID_PRACOWNIKA),' ') AS "ID PRACOWNIKA", TO_CHAR(SUM(ZLECENIE.CENA_USLUGI))||'ZŁ' AS "CENA USLUGI", TO_CHAR(SUM(ZLECENIE.ZYSK))||'ZŁ' AS "ZYSK"
FROM ZLECENIE
GROUP BY GROUPING SETS(ZLECENIE.CZAS_TRWANIA, ZLECENIE.TYP_ZLECENIA_ID_TYPU, ZLECENIE.PRACOWNIK_ID_PRACOWNIKA,(ZLECENIE.KLIENT_ID_KLIENTA,ZLECENIE.TYP_ZLECENIA_ID_TYPU))
ORDER BY ZLECENIE.KLIENT_ID_KLIENTA,ZLECENIE.CZAS_TRWANIA,ZLECENIE.TYP_ZLECENIA_ID_TYPU, ZLECENIE.PRACOWNIK_ID_PRACOWNIKA;
--6. GROUPING SETS
SELECT NVL(TO_CHAR(ZLECENIE.CZAS_TRWANIA),' ') AS "CZAS TRWANIA", NVL(TO_CHAR(ZLECENIE.TYP_ZLECENIA_ID_TYPU),' ') AS "TYP USLUGI",
NVL(TO_CHAR(ZLECENIE.PRACOWNIK_ID_PRACOWNIKA),' ') AS "ID PRACOWNIKA", TO_CHAR(SUM(ZLECENIE.ZYSK))||'ZŁ' AS "ZYSK"
FROM ZLECENIE
GROUP BY GROUPING SETS(ZLECENIE.CZAS_TRWANIA,(ZLECENIE.CZAS_TRWANIA, ZLECENIE.TYP_ZLECENIA_ID_TYPU), ZLECENIE.PRACOWNIK_ID_PRACOWNIKA)
ORDER BY ZLECENIE.CZAS_TRWANIA,ZLECENIE.TYP_ZLECENIA_ID_TYPU,ZLECENIE.PRACOWNIK_ID_PRACOWNIKA;
--7. OKNO RUCHOME
SELECT ROK.NUMER AS "ROK", MIESIAC.ID_MIESIACA AS "MIESIAC", TO_CHAR(SUM(ZLECENIE.ZYSK))||'ZŁ' AS "ZYSK",
TO_CHAR(NVL(TO_CHAR(LAG(SUM(ZLECENIE.ZYSK),1) OVER (ORDER BY ROK.NUMER, MIESIAC.ID_MIESIACA)),'---'))||'ZŁ' AS "LAG",
TO_CHAR(NVL(TO_CHAR(SUM(ZLECENIE.ZYSK) - (LAG(SUM(ZLECENIE.ZYSK),1) OVER (ORDER BY ROK.NUMER, MIESIAC.ID_MIESIACA))),'---'))||'ZŁ' AS "WZROST/SPADEK"
FROM ROK, MIESIAC, ZLECENIE, DATA
WHERE ROK.ID_ROKU = DATA.ROK_ID_ROKU
AND MIESIAC.ID_MIESIACA = DATA.MIESIAC_ID_MIESIACA
AND DATA.ID_DATY = ZLECENIE.DATA_ID_DATY
AND ROK.NUMER = 2015
GROUP BY ROK.NUMER, MIESIAC.ID_MIESIACA;
--8. OKNO RUCHOME
SELECT ROK.NUMER AS "ROK" ,MIESIAC.NAZWA AS "MIESIAC",
TO_CHAR(SUM(ZLECENIE.ZYSK))||'ZŁ' AS "ZYSK",
TO_CHAR(SUM(SUM(ZLECENIE.ZYSK)) OVER (ORDER BY MIESIAC.ID_MIESIACA ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW))||'ZŁ' AS "SUMA KUMULACYJNA",
TO_CHAR(FIRST_VALUE(SUM(ZLECENIE.ZYSK)) OVER (ORDER BY MIESIAC.ID_MIESIACA ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING))||'ZŁ' AS "POPRZEDNI MIESIAC",
TO_CHAR(LAST_VALUE(SUM(ZLECENIE.ZYSK)) OVER (ORDER BY MIESIAC.ID_MIESIACA ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING))||'ZŁ' AS "KOLEJNY MIESIAC"
FROM ZLECENIE,MIESIAC,DATA,ROK
WHERE MIESIAC.ID_MIESIACA = DATA.MIESIAC_ID_MIESIACA
AND ROK.ID_ROKU = DATA.ROK_ID_ROKU
AND DATA.ID_DATY = ZLECENIE.DATA_ID_DATY
AND ROK.NUMER = 2015
GROUP BY ROK.ID_ROKU, MIESIAC.ID_MIESIACA, ROK.NUMER, MIESIAC.NAZWA
ORDER BY ROK.NUMER,MIESIAC.ID_MIESIACA;
--9. OKNO RUCHOME
SELECT ROK.NUMER AS "ROK", KWARTAL.ID_KWARTALU AS "KWARTAL", PRACOWNIK.ID_PRACOWNIKA AS "ID",
COUNT(ZLECENIE.ID_ZLECENIA) AS "ILOSC OBSLUZONYCH KLIENTOW",
SUM(COUNT(ZLECENIE.ID_ZLECENIA)) OVER (PARTITION BY KWARTAL.ID_KWARTALU,ROK.NUMER ORDER BY KWARTAL.ID_KWARTALU ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS "SUMA ZLECEN",
SUM(COUNT(ZLECENIE.ID_ZLECENIA)) OVER (PARTITION BY ROK.NUMER ORDER BY ROK.NUMER ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS "SUMA ZLECEN1",
TO_CHAR(SUM(ZLECENIE.ZYSK))||'ZŁ' AS "ZYSK",
TO_CHAR(SUM(SUM(ZLECENIE.ZYSK)) OVER (PARTITION BY KWARTAL.ID_KWARTALU,ROK.NUMER ORDER BY KWARTAL.ID_KWARTALU ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW))||'ZŁ' AS "SUMA KUMULACYJNA",
TO_CHAR(SUM(SUM(ZLECENIE.ZYSK)) OVER (PARTITION BY ROK.NUMER ORDER BY ROK.NUMER ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW))||'ZŁ' AS "SUMA KUMULACYJNA1"
FROM ZLECENIE, ROK, DATA, KWARTAL, PRACOWNIK
WHERE ROK.ID_ROKU = DATA.ROK_ID_ROKU
AND KWARTAL.ID_KWARTALU = DATA.KWARTAL_ID_KWARTALU
AND DATA.ID_DATY = ZLECENIE.DATA_ID_DATY
AND PRACOWNIK.ID_PRACOWNIKA = ZLECENIE.PRACOWNIK_ID_PRACOWNIKA
AND ROK.NUMER BETWEEN 2012 AND 2016
AND KWARTAL.ID_KWARTALU BETWEEN 1 AND 3
GROUP BY ROK.NUMER, KWARTAL.ID_KWARTALU, PRACOWNIK.ID_PRACOWNIKA
ORDER BY ROK.NUMER, KWARTAL.ID_KWARTALU;
--10. PARTYCJA OBLICZENIOWA
SELECT DISTINCT ZLECENIE.TYP_ZLECENIA_ID_TYPU AS "TYP ZLECENIA", PRACOWNIK.ID_PRACOWNIKA AS "ID PRACOWNIKA",
TO_CHAR(ROUND(SUM(ZLECENIE.ZYSK) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU, PRACOWNIK.ID_PRACOWNIKA),2))||'ZŁ' AS "ZYSK",
TO_CHAR(ROUND((100*SUM(ZLECENIE.ZYSK) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU, PRACOWNIK.ID_PRACOWNIKA)/SUM(ZLECENIE.ZYSK) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU)),2)||'%') AS "UDZIAL % W ZYSKU DLA TYPU",
TO_CHAR(ROUND(SUM(ZLECENIE.CENA_USLUGI) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU,PRACOWNIK.ID_PRACOWNIKA),2))||'ZŁ'AS "CENA USLUGI",
TO_CHAR(ROUND((100*SUM(ZLECENIE.CENA_USLUGI) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU, PRACOWNIK.ID_PRACOWNIKA)/SUM(ZLECENIE.CENA_USLUGI) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU)),2)||'%') AS "UDZIAL % W CENIE DLA TYPU",
TO_CHAR(ROUND(SUM(ZLECENIE.KOSZT_MATERIALOW) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU,PRACOWNIK.ID_PRACOWNIKA),2))||'ZŁ' AS "KOSZT MATERIALU",
TO_CHAR(ROUND((100*SUM(ZLECENIE.KOSZT_MATERIALOW) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU, PRACOWNIK.ID_PRACOWNIKA)/SUM(ZLECENIE.KOSZT_MATERIALOW) OVER (PARTITION BY ZLECENIE.TYP_ZLECENIA_ID_TYPU)),2)||'%') AS "UDZIAL % W MATERIALE DLA TYPU"
FROM ZLECENIE,PRACOWNIK, DATA, MIESIAC, ROK
WHERE PRACOWNIK.ID_PRACOWNIKA = ZLECENIE.PRACOWNIK_ID_PRACOWNIKA
AND MIESIAC.ID_MIESIACA = DATA.MIESIAC_ID_MIESIACA
AND ROK.ID_ROKU = DATA.ROK_ID_ROKU
AND DATA.ID_DATY = ZLECENIE.DATA_ID_DATY
AND MIESIAC.ID_MIESIACA BETWEEN 1 AND 9
AND ROK.NUMER BETWEEN 2011 AND 2015
ORDER BY ZLECENIE.TYP_ZLECENIA_ID_TYPU, PRACOWNIK.ID_PRACOWNIKA;
--11. PARTYCJA OBLICZENIOWA
SELECT DISTINCT ROK.NUMER AS "ROK", KWARTAL.ID_KWARTALU AS "KWARTAL" , GRUPA_KLIENTELI.NAZWA_GRUPY AS "GRUPA KLIENTELI",
COUNT(ZLECENIE.ID_ZLECENIA) OVER (PARTITION BY ROK.NUMER, KWARTAL.ID_KWARTALU , GRUPA_KLIENTELI.NAZWA_GRUPY) AS "ILOSC ZLECEN",
TO_CHAR(ROUND((100*COUNT(ZLECENIE.ID_ZLECENIA) OVER (PARTITION BY ROK.NUMER, KWARTAL.ID_KWARTALU, GRUPA_KLIENTELI.NAZWA_GRUPY)/COUNT(ZLECENIE.ID_ZLECENIA) OVER (PARTITION BY ROK.NUMER,KWARTAL.ID_KWARTALU)),2)||'%') AS "UDZIAL % DLA KWARTALU",
TO_CHAR(ROUND((100*COUNT(ZLECENIE.ID_ZLECENIA) OVER (PARTITION BY ROK.NUMER, KWARTAL.ID_KWARTALU, GRUPA_KLIENTELI.NAZWA_GRUPY)/COUNT(ZLECENIE.ID_ZLECENIA) OVER (PARTITION BY ROK.NUMER)),2)||'%') AS "UDZIAL % DLA ROKU"
FROM ROK, KWARTAL, GRUPA_KLIENTELI, DATA, KLIENT, ZLECENIE
WHERE ROK.ID_ROKU = DATA.ROK_ID_ROKU
AND KWARTAL.ID_KWARTALU = DATA.KWARTAL_ID_KWARTALU
AND GRUPA_KLIENTELI.ID_GRUPY = KLIENT.GRUPA_KLIENTELI_ID_GRUPY
AND DATA.ID_DATY = ZLECENIE.DATA_ID_DATY
AND KLIENT.ID_KLIENTA = ZLECENIE.KLIENT_ID_KLIENTA
AND ROK.NUMER BETWEEN 2012 AND 2016
ORDER BY ROK.NUMER,KWARTAL.ID_KWARTALU ,GRUPA_KLIENTELI.NAZWA_GRUPY;
--12. RANKING
SELECT DZIEN_TYGODNIA.NAZWA AS "DZIEN", COUNT(ZLECENIE.ID_ZLECENIA) AS "ILOSC ZLECEN",
DENSE_RANK() OVER (ORDER BY COUNT(ZLECENIE.ID_ZLECENIA) DESC) AS "RANKING"
FROM DZIEN_TYGODNIA,DATA,ZLECENIE, MIESIAC, ROK
WHERE DZIEN_TYGODNIA.ID_DNIA = DATA.DZIEN_TYGODNIA_ID_DNIA
AND DATA.ID_DATY = ZLECENIE.DATA_ID_DATY
AND ROK.ID_ROKU = DATA.ROK_ID_ROKU
AND MIESIAC.ID_MIESIACA = DATA.MIESIAC_ID_MIESIACA
AND ROK.NUMER BETWEEN 2011 AND 2014
AND MIESIAC.ID_MIESIACA BETWEEN 1 AND 9
GROUP BY DZIEN_TYGODNIA.NAZWA;
--13. RANKING
SELECT ZLECENIE.TYP_ZLECENIA_ID_TYPU AS "ID TYPU" ,TYP_ZLECENIA.NAZWA AS "NAZWA ZLECENIA", COUNT(ZLECENIE.KLIENT_ID_KLIENTA) AS "ILOSC KLIENTOW",
RANK() OVER (ORDER BY COUNT(ZLECENIE.KLIENT_ID_KLIENTA) DESC) AS "RANKING" FROM ZLECENIE,TYP_ZLECENIA,ROK,DATA, MIESIAC
WHERE TYP_ZLECENIA.ID_TYPU = ZLECENIE.TYP_ZLECENIA_ID_TYPU
AND ROK.ID_ROKU = DATA.ROK_ID_ROKU
AND MIESIAC.ID_MIESIACA = DATA.MIESIAC_ID_MIESIACA
AND DATA.ID_DATY = ZLECENIE.DATA_ID_DATY
AND ROK.NUMER BETWEEN 2012 AND 2013
AND MIESIAC.ID_MIESIACA BETWEEN 1 AND 12
GROUP BY ZLECENIE.TYP_ZLECENIA_ID_TYPU,TYP_ZLECENIA.NAZWA;
--14. RANKING
SELECT PRACOWNIK.ID_PRACOWNIKA, PRACOWNIK.IMIE, PRACOWNIK.NAZWISKO, STANOWISKO.NAZWA,
COUNT( ZLECENIE.ID_ZLECENIA) AS "ILOSC ZLECEN",
DENSE_RANK() OVER (ORDER BY COUNT(ZLECENIE.ID_ZLECENIA) DESC) AS "RANKING"
FROM PRACOWNIK, STANOWISKO, ZLECENIE, DATA, MIESIAC, ROK
WHERE STANOWISKO.ID_STANOWISKO = PRACOWNIK.STANOWISKO_ID_STANOWISKO
AND PRACOWNIK.ID_PRACOWNIKA = ZLECENIE.PRACOWNIK_ID_PRACOWNIKA
AND MIESIAC.ID_MIESIACA = DATA.MIESIAC_ID_MIESIACA
AND ROK.ID_ROKU = DATA.ROK_ID_ROKU
AND DATA.ID_DATY = ZLECENIE.DATA_ID_DATY
AND MIESIAC.ID_MIESIACA BETWEEN 1 AND 12
AND ROK.NUMER BETWEEN 2011 AND 2016
GROUP BY PRACOWNIK.ID_PRACOWNIKA, PRACOWNIK.IMIE, PRACOWNIK.NAZWISKO, STANOWISKO.NAZWA;