zadania hurtownie 2b, WSB Poznań, Hurtownie Danych


Funkcje analityczne SQL

  1. Znajdź trzy zamówienia o najwyższej wartości.

ID_ZAMOWIENIA

DATA

WARTOSC

6

09/01/20

81300

7

09/01/21

52000

19

09/03/10

28400

select ID_ZAMOWIENIA, DATA, WARTOSC from ( select ID_ZAMOWIENIA, DATA, WARTOSC, rank() over (order by WARTOSC desc) r from zamowienia) where r <=3;

  1. Wyświetl dane dziesiątego zamówienia w kolejności wartości.

ID_ZAMOWIENIA

DATA

WARTOSC

FIRMA

MIASTO

14

09/02/12

8000

Waga Kraków

Kraków

select ID_ZAMOWIENIA, DATA, WARTOSC, FIRMA, MIASTO from (

select ID_ZAMOWIENIA, DATA, WARTOSC, FIRMA, MIASTO, rank() over (order by WARTOSC desc) r from zamowienia) where r =10;

  1. Wygeneruj ranking miast według łącznej sumy złożonych zamówień.

MIASTO

RAZEM

RANKING

Kraków

100280

1

Warszawa

97700

2

Poznań

73700

3

Gdańsk

28900

4

select miasto, razem, rank () over (order by miasto) razem from (select miasto, sum(WARTOSC)as razem from zamowienia group by miasto)

  1. Wyświetl dane firmy, która złożyła najwięcej zamówień.

FIRMA

RAZEM_ZAMÓWIEŃ

Wodnik sp. z o.o.

6

select * from (select firma, rank () over (order by suma desc)ranking, suma
from (select  FIRMA, count (firma) over (order by firma)suma from zamowienia group by firma) ) where ranking = 1

  1. Dla każdego miasta wyświetl nazwę firmy, która złożyła zamówienia o najwyższej łącznej wartości.

MIASTO

FIRMA

RAZEM

Gdańsk

R.A.K.

28900

Kraków

Waga Kraków

66900

Poznań

Wodnik sp. z o.o.

57700

Warszawa

Koziorożec Polska

85200

select miasto, firma, razem from(select miasto, firma, razem,  rank () over (partition by miasto order by razem desc ) ranking from (select miasto, firma, sum(WARTOSC)as razem

from zamowienia group by miasto, firma)) where ranking = 1

  1. W oparciu o wartości podziel złożone w Poznaniu zamówienia na trzy możliwie równoliczne grupy: zamówienia najtańsze, zamówienia średnie, zamówienia najdroższe.

ID_ZAMOWIENIA

DATA

WARTOSC

GRUPA

9

09/02/05

2200

najtańsze

15

09/02/16

5200

najtańsze

1

09/01/11

5200

najtańsze

4

09/01/16

7500

średnie

20

09/03/15

9200

średnie

3

09/01/14

16000

najdroższe

19

09/03/10

28400

najdroższe

SELECT id_zamowienia, data, wartosc, ntile(3) OVER (ORDER BY wartosc),

decode (ntile(3) OVER (ORDER BY wartosc),1,'najtansze',2,'srednie','najdrozsze')

FROM zamowienia WHERE miasto = 'Poznań' order by wartość

  1. Wyświetl informacje o 10% najdroższych zamówień.

ID_ZAMOWIENIA

DATA

WARTOSC

6

09/01/20

81300

7

09/01/21

52000

SELECT id_zamowienia,data,wartość FROM ( SELECT id_zamowienia,data,wartosc, percent_rank() over (ORDER BY wartosc DESC) pr FROM zamowienia)WHERE pr <= 0.09;

  1. Dla każdego zamówienia złożonego w Krakowie wyświetl jego dane oraz średnią wartość trzech ostatnich zamówień (wliczając bieżące).

ID_ZAMOWIENIA

DATA

WARTOSC

SREDNIA_Z_3

7

09/01/21

52000

52000

8

09/02/01

11000

31500

10

09/02/06

3820

22273

11

09/02/07

14000

9607

14

09/02/12

8000

8607

21

09/03/16

6900

9633

22

09/03/20

4560

6487

select id_zamowienia, data, wartosc,  avg(wartosc) OVER (ORDER BY data rows 2 PRECEDING) as srednia_z_3 from zamowienia where miasto = 'Kraków' 
order by data, srednia_z_3 desc

Funkcje analityczne SQL

  1. Znajdź trzy zamówienia o najwyższej wartości.

ID_ZAMOWIENIA

DATA

WARTOSC

6

09/01/20

81300

7

09/01/21

52000

19

09/03/10

28400

select ID_ZAMOWIENIA, DATA, WARTOSC from ( select ID_ZAMOWIENIA, DATA, WARTOSC, rank() over (order by WARTOSC desc) r from zamowienia) where r <=3;

  1. Wyświetl dane dziesiątego zamówienia w kolejności wartości.

ID_ZAMOWIENIA

DATA

WARTOSC

FIRMA

MIASTO

14

09/02/12

8000

Waga Kraków

Kraków

select ID_ZAMOWIENIA, DATA, WARTOSC, FIRMA, MIASTO from (

select ID_ZAMOWIENIA, DATA, WARTOSC, FIRMA, MIASTO, rank() over (order by WARTOSC desc) r from zamowienia) where r =10;

  1. Wygeneruj ranking miast według łącznej sumy złożonych zamówień.

MIASTO

RAZEM

RANKING

Kraków

100280

1

Warszawa

97700

2

Poznań

73700

3

Gdańsk

28900

4

select miasto, razem, rank () over (order by miasto) razem from (select miasto, sum(WARTOSC)as razem from zamowienia group by miasto)

  1. Wyświetl dane firmy, która złożyła najwięcej zamówień.

FIRMA

RAZEM_ZAMÓWIEŃ

Wodnik sp. z o.o.

6

select * from (select firma, rank () over (order by suma desc)ranking, suma
from (select  FIRMA, count (firma) over (order by firma)suma from zamowienia group by firma) ) where ranking = 1

  1. Dla każdego miasta wyświetl nazwę firmy, która złożyła zamówienia o najwyższej łącznej wartości.

MIASTO

FIRMA

RAZEM

Gdańsk

R.A.K.

28900

Kraków

Waga Kraków

66900

Poznań

Wodnik sp. z o.o.

57700

Warszawa

Koziorożec Polska

85200

select miasto, firma, razem from(select miasto, firma, razem,  rank () over (partition by miasto order by razem desc ) ranking from (select miasto, firma, sum(WARTOSC)as razem

from zamowienia group by miasto, firma)) where ranking = 1

  1. W oparciu o wartości podziel złożone w Poznaniu zamówienia na trzy możliwie równoliczne grupy: zamówienia najtańsze, zamówienia średnie, zamówienia najdroższe.

ID_ZAMOWIENIA

DATA

WARTOSC

GRUPA

9

09/02/05

2200

najtańsze

15

09/02/16

5200

najtańsze

1

09/01/11

5200

najtańsze

4

09/01/16

7500

średnie

20

09/03/15

9200

średnie

3

09/01/14

16000

najdroższe

19

09/03/10

28400

najdroższe

SELECT id_zamowienia, data, wartosc, ntile(3) OVER (ORDER BY wartosc),

decode (ntile(3) OVER (ORDER BY wartosc),1,'najtansze',2,'srednie','najdrozsze')

FROM zamowienia WHERE miasto = 'Poznań' order by wartość

  1. Wyświetl informacje o 10% najdroższych zamówień.

ID_ZAMOWIENIA

DATA

WARTOSC

6

09/01/20

81300

7

09/01/21

52000

SELECT id_zamowienia,data,wartość FROM ( SELECT id_zamowienia,data,wartosc, percent_rank() over (ORDER BY wartosc DESC) pr FROM zamowienia)WHERE pr <= 0.09;

  1. Dla każdego zamówienia złożonego w Krakowie wyświetl jego dane oraz średnią wartość trzech ostatnich zamówień (wliczając bieżące).

ID_ZAMOWIENIA

DATA

WARTOSC

SREDNIA_Z_3

7

09/01/21

52000

52000

8

09/02/01

11000

31500

10

09/02/06

3820

22273

11

09/02/07

14000

9607

14

09/02/12

8000

8607

21

09/03/16

6900

9633

22

09/03/20

4560

6487

select id_zamowienia, data, wartosc,  avg(wartosc) OVER (ORDER BY data rows 2 PRECEDING) as srednia_z_3 from zamowienia where miasto = 'Kraków' 
order by data, srednia_z_3 desc

3



Wyszukiwarka