Advertisement
Bhaad

Kolos1v2

Jun 28th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 14.90 KB | None | 0 0
  1. https://pastebin.com/JzWfpnvE
  2.  
  3. --Zapytanie zwracające 3 kolumny : imię, nazwisko oraz ilość zrealizowanych zamówień.
  4. --Jedynie pracownicy / osoba o największej ilość zamówień.(1)
  5.  
  6. select p.Imię, p.Nazwisko, count(z.IDpracownika) as maks from Zamówienia z
  7. join Pracownicy p on (p.IDpracownika = z.IDpracownika)
  8. group by Imię, Nazwisko
  9. having count(z.IDpracownika) = (
  10. select max(suma) from (
  11. select IDpracownika, count(z.IDpracownika) as suma from Zamówienia z
  12. group by z.IDpracownika
  13. ) as t1)
  14.  
  15. --Zapytanie zwracające 3 kolumny : Imię, Nazwisko, ilość zamówień zrealizowanych po terminie.
  16. --Jedynie osoba z najwiekszą ilością zamówien po terminie. (1)
  17.  
  18. select Imię, Nazwisko, count(ilość) as ilość from  Zamówienia as z join Pracownicy as p
  19. on z.IDpracownika = p.IDpracownika
  20. join [Rozszerzone opisy zamówień] as ro
  21. on ro.IDzamówienia = z.IDzamówienia
  22. where DataWysyłki>DataWymagana
  23. group by Imię, Nazwisko
  24. having count(Ilość) = (select max(t1.ile) from (select COUNT(ilość) as ile from Zamówienia as z join Pracownicy as p
  25. on z.IDpracownika = p.IDpracownika
  26. join [Rozszerzone opisy zamówień] as ro
  27. on ro.IDzamówienia = z.IDzamówienia
  28. where DataWysyłki>DataWymagana
  29. group by Imię, Nazwisko)as t1)
  30.  
  31. --Zapytanie zwraca 2 kolumny : imie, nazwisko (pracownik).
  32. --Jedynie osoby, które zrealizowaly najwiecej zamówien w kraju swojego pochodzenia. (1)
  33.  
  34. select Imię, Nazwisko from pracownicy
  35. where idpracownika in (
  36.      select idpracownika from (
  37.         select idpracownika, count(idzamówienia) as ile from Zamówienia
  38.         group by idpracownika
  39.     ) as t2
  40.     where ile in (
  41.         select max(ile) from (
  42.             select idpracownika, count(idzamówienia) as ile from Zamówienia
  43.             group by idpracownika
  44.         ) as t1
  45.     )
  46. )
  47.  
  48. --Zapytanie zwracające 2 kolumny : idzamówienia, wartość zamówienia.
  49. --Jedynie najdroższe zamówienie w USA. (1)
  50.  
  51. select top 1 o.IDzamówienia, od.CenaJednostkowa from Zamówienia as o
  52.  join [Opisy zamówień] as od on od.IDzamówienia=o.IDzamówienia
  53.  join Klienci as c on o.IDKlienta=c.IDklienta
  54.  where c.Kraj like('USA')
  55.  order by CenaJednostkowa desc
  56.  
  57. --Zapytanie zwracające 2 kolumny : Orderid, ilość różnych produktów na zamówieniu.
  58. --Jedynie zamówienia z największą ilością różnych produktów. (1)
  59.  
  60. select IDzamówienia, count(IDzamówienia) as ile from [Opisy zamówień]
  61. group by IDzamówienia
  62. having count(IDzamówienia) = (
  63.     select max(t1.maks)
  64.     from ( 
  65.         select count(IDzamówienia) as maks  from [Opisy zamówień]
  66.         group by IDzamówienia
  67.         ) as t1
  68. )
  69.  
  70. --Zapytanie zwracające 2 kolumny : nazwaFirmy (dostawca), ilość produktów.
  71. --Jedynie dostawca dostarczający najwięcej produktów w kategorii napoje. (1)
  72.  
  73. select NazwaFirmy, count(NazwaFirmy) as ile from Produkty as p
  74. join Kategorie as k on p.IDkategorii=k.IDkategorii
  75. join Dostawcy as d on d.IDdostawcy=p.IDdostawcy
  76. where NazwaKategorii = 'Napoje'
  77. group by NazwaFirmy
  78. having count(p.IDdostawcy)=(
  79. select max(ile) from (select IDdostawcy, count(IDdostawcy) as ile from Produkty as p
  80. join Kategorie as k on p.IDkategorii=k.IDkategorii
  81. where NazwaKategorii = 'Napoje'
  82. group by IDdostawcy) as a)
  83.  
  84. --znajdz najtanszy i najdrozszy produkt dostarczony przez
  85. --dostawce ktorego nazwa zaczyna sie na litere od c-p
  86. --podaj z jakiej kategorii on pochodzi oraz w dodatkowej
  87. --kolumnie czy jest to najdrozszy czy najtanszy produkt
  88. --nazwa kategorii
  89. --najdrozszy produkt ma dostawce na litere A
  90.  
  91.  select 'najdrozszy' as 'drogi_tani', d.NazwaFirmy , p.NazwaProduktu , p.CenaJednostkowa , k.NazwaKategorii
  92.     from Dostawcy as d
  93.     inner join produkty as p
  94.         on d.IDdostawcy=p.IDdostawcy
  95.     inner join kategorie as k
  96.         on k.IDkategorii=p.IDkategorii
  97.             where (lower(substring(d.NazwaFirmy,1,1))) between 'a' and 'p'
  98.             and p.CenaJednostkowa in (select max(p.cenajednostkowa)
  99.                 from produkty as p
  100.                 inner join Dostawcy as d
  101.                     on d.IDdostawcy=p.IDdostawcy)
  102. union
  103. select 'najtanszy' as 'drogi_tani', d.NazwaFirmy , p.NazwaProduktu , p.CenaJednostkowa , k.NazwaKategorii
  104.     from Dostawcy as d
  105.     inner join produkty as p
  106.         on d.IDdostawcy=p.IDdostawcy
  107.     inner join kategorie as k
  108.         on k.IDkategorii=p.IDkategorii
  109.             where (lower(substring(d.NazwaFirmy,1,1))) between 'a' and 'p'
  110.             and p.CenaJednostkowa in
  111.             (select min(p.cenajednostkowa)
  112.                 from produkty as p
  113.                 inner join Dostawcy as d
  114.                     on d.IDdostawcy=p.IDdostawcy)
  115.  
  116. --Zapytanie zwracajace 3 kolumny : imię, nazwisko, id zamówienia.
  117. --Jedynie zamówienia z 3 kwartału 1996 zrealizowane po terminie.(3)
  118.  
  119. select imię, nazwisko, idzamówienia
  120. from (
  121.     select idzamówienia, idpracownika
  122.     from Zamówienia
  123.     where DataZamówienia >= '1996-07-01' and DataZamówienia <= '1996-09-30'
  124.     and DataWysyłki >= '1996-07-01' and DataWysyłki <= '1996-09-30'
  125.     and DataWysyłki > DataWymagana
  126.     ) as t1
  127. join Pracownicy as p on t1.IDpracownika=p.IDpracownika
  128.  
  129.  -- Zapytanie zwracające 3 kolumny : imię, nazwisko, ilość zrealizowanych zamówień w 1997.
  130.  --Jedynie pracownicy, którzy w roku 1997 wykonali więcej niż wynosiła średnia ilość zrealizowanych zamówień na pracownika. (4)
  131.  
  132. select p.Imię,p.Nazwisko, count(p.IDpracownika) as ilość from Pracownicy as p
  133. join Zamówienia as z
  134. on p.IDpracownika =  z.IDpracownika
  135. where DataZamówienia between '1997/01/01' and '1997/12/31'
  136. group by p.Imię,p.Nazwisko
  137. having count(p.IDpracownika) > (
  138.     select avg(t1.suma) as srednia
  139.     from (
  140.         select p.IDpracownika, count(p.IDpracownika) as suma from Pracownicy as p
  141.         join Zamówienia as z
  142.         on p.IDpracownika = z.IDpracownika
  143.         where DataZamówienia between '1997/01/01' and '1997/12/31'
  144.         group by p.IDpracownika
  145.     ) as t1
  146. )
  147.  
  148. --Zapytanie zwracające 3 kolumny : imię, nazwisko, id zamówienia.
  149. --Jedynie zamówienia z 3 kwartału 1996 zrealizowane po terminie. (5)
  150.  
  151. select p.Imię, p.nazwisko, z.IDzamówienia from Pracownicy as p
  152. join Zamówienia as z on p.IDpracownika = z.IDpracownika
  153. where datepart(month, z.DataZamówienia)>06 and datepart(month, z.DataZamówienia)<10 and
  154. datepart(year, z.DataZamówienia)=1996 and
  155. z.DataWymagana-z.DataWysyłki<0
  156.  
  157. --Zapytanie zwracające 3 kolumny : Nazwa firmy (dostawca), Nazwa kategorii,
  158. --ilość produktów dostarczanych w danej kategorii przez wskazaną firmę. Jedynie dostawcy z USA. (5)*/
  159.  
  160. select NazwaFirmy, NazwaKategorii, count(d.IDdostawcy) as ile from Dostawcy as d
  161. join Produkty as p on p.IDdostawcy=d.IDdostawcy
  162. join Kategorie as k on k.IDkategorii=p.IDkategorii
  163. where Kraj='USA'
  164. group by NazwaFirmy, NazwaKategorii
  165.  
  166. --Zapytanie zwracające 2 kolumny : nazwę kategorii oraz nazwę produktu.
  167. --Jedynie najdroższe produkty dla każdej z kategorii. (8)
  168.  
  169. select NazwaKategorii, NazwaProduktu from (
  170.     select max(CenaJednostkowa) as maks, IDkategorii from Produkty
  171.     group by IDkategorii
  172. ) as t1
  173. join Kategorie as k
  174. on k.IDkategorii = t1.IDkategorii
  175. join Produkty as p on p.IDkategorii=k.IDkategorii
  176. where CenaJednostkowa=maks
  177.  
  178. --Zapytanie zwracające 2 kolumny : nazwę kategorii oraz nazwę firmy.
  179. --Jedynie firmy, które dostarczaja najwięcej produktów w danej kategorii. (14)
  180.  
  181. select NazwaKategorii,NazwaFirmy from (
  182.     select k.NazwaKategorii,d.NazwaFirmy,k.idKategorii,p.idproduktu
  183.     from Produkty as p join Kategorie as k
  184.     on p.IDkategorii=k.IDkategorii
  185.     join Dostawcy as d
  186.     on d.IDdostawcy=p.IDdostawcy
  187. )as t1
  188. join (
  189.     select max(p.idproduktu)as 'maks',k.idkategorii
  190.     from Produkty as p join Kategorie as k
  191.     on p.IDkategorii=k.IDkategorii
  192.     group by k.IDkategorii
  193. )as t2
  194. on t1.IDkategorii=t2.IDkategorii
  195. where idproduktu=maks
  196.  
  197. --Zapytanie zwracające 2 kolumny : kraj (klient), wartość zamówienia.
  198. --Jedynie zamówienia realizowane w roku 1998 (21)
  199.  
  200. select z.KrajOdbiorcy,  sum(t2.suma) as wartość_zamówienia from Zamówienia as z
  201. join
  202. (select z.IDzamówienia, sum(t1.wartosc) as suma from Zamówienia as z
  203. join
  204.  (select IDzamówienia, (oz.ilość * oz.CenaJednostkowa) as wartosc from [Opisy zamówień] as oz
  205.  group by IDzamówienia, oz.ilość, oz.CenaJednostkowa) as t1
  206.  on z.IDzamówienia = t1.IDzamówienia
  207.  group by z.IDzamówienia) as t2
  208.  
  209.  on z.IDzamówienia = t2.IDZamówienia
  210.  where z.DataWysyłki between '1998-01-01' and '1999-01-01'
  211.  group by z.KrajOdbiorcy
  212.  
  213. --Zapytanie zwracające 2 kolumny : Kraj (klient), NazwaFirmy (spedytor).
  214. --Jedynie najczęściej wykorzystywani spedytorzy na terenie danego kraju. (23)
  215.  
  216. select t3.KrajOdbiorcy, t3.[Spedytorzy.NazwaFirmy] from (
  217.     select KrajOdbiorcy, max(maks) as ile from (
  218.         select  KrajOdbiorcy, [Spedytorzy.NazwaFirmy], count([Spedytorzy.NazwaFirmy]) as maks from Faktury
  219.         group by KrajOdbiorcy, [Spedytorzy.NazwaFirmy]
  220.     ) as t1
  221.     group by KrajOdbiorcy) as t2
  222.     join (select  KrajOdbiorcy, [Spedytorzy.NazwaFirmy], count([Spedytorzy.NazwaFirmy]) as maks from Faktury
  223.     group by KrajOdbiorcy, [Spedytorzy.NazwaFirmy]
  224. ) as t3
  225. on t3.KrajOdbiorcy=t2.KrajOdbiorcy
  226. group by t3.KrajOdbiorcy,t2.ile, t3.maks, t3.[Spedytorzy.NazwaFirmy]
  227. having ile=maks
  228.  
  229. --Zapytanie zwracające 3 kolumny : kraj (klient), imię, nazwisko.
  230. --Jedynie pracowicy realizujący najwięcej zamówień z danego kraju. (28)
  231.  
  232. select krajodbiorcy as Kraj, imię as Imię, nazwisko as Nazwisko from (
  233.     select t3.krajodbiorcy, idpracownika from (
  234.         select krajodbiorcy, max(ile) as maks from (
  235.             select KrajOdbiorcy, idpracownika, count(idzamówienia) as ile from Zamówienia
  236.             group by IDpracownika, KrajOdbiorcy) as t1
  237.         group by KrajOdbiorcy) as t3
  238.         join (
  239.             select KrajOdbiorcy, IDpracownika, ile from (
  240.                 select KrajOdbiorcy, idpracownika, count(idzamówienia) as ile from Zamówienia
  241.                 group by IDpracownika, KrajOdbiorcy ) as t2
  242.             ) as t4
  243.         on t3.KrajOdbiorcy=t4.KrajOdbiorcy
  244.         where t3.maks=t4.ile ) as t5
  245. join Pracownicy as p on t5.IDpracownika=p.IDpracownika
  246.  
  247. --Zapytanie zwracające 2 kolumny : Kraj, Nazwaproduktu.
  248. --Jedynie produkty najczęściej zamawiane w danym kraju. (46)
  249.  
  250. select tg1.KrajOdbiorcy,tg2.NazwaProduktu from (
  251.     select t1.KrajOdbiorcy,  max(t1.ilosc) as maks from (
  252.         select z.KrajOdbiorcy, p.NazwaProduktu, count(oz.IDzamówienia) as ilosc from Zamówienia as z
  253.         join [Opisy zamówień] as oz
  254.         on z.IDzamówienia=oz.IDzamówienia
  255.         join Produkty as p
  256.         on p.IDproduktu=oz.IDproduktu
  257.         group by z.KrajOdbiorcy, p.NazwaProduktu
  258.     ) as t1
  259.     group by t1.KrajOdbiorcy
  260. ) as tg1  
  261. join (
  262.     select z.KrajOdbiorcy, p.NazwaProduktu, count(oz.IDzamówienia) as iloscc from Zamówienia as z
  263.     join [Opisy zamówień] as oz
  264.     on  z.IDzamówienia=oz.IDzamówienia
  265.     join Produkty as p
  266.     on p.IDproduktu=oz.IDproduktu
  267.     group by z.KrajOdbiorcy, p.NazwaProduktu
  268.     ) as tg2
  269. on tg1.KrajOdbiorcy=tg2.KrajOdbiorcy
  270. where tg1.maks=tg2.iloscc
  271. order by KrajOdbiorcy asc
  272.  
  273. --Zapytanie zwracające 3 kolumny : NazwaFirmy, idzamówienia, kwota.
  274. --Jedynie najdroższe zamówienia dla każdego z klientów. (89)
  275.  
  276. select NazwaFirmy, Faktury.IDzamówienia, Faktury.CenaKońcowa as kwota from Klienci
  277. join Faktury
  278. on Klienci.IDklienta = Faktury.IDklienta
  279. join (
  280.     select  max(Faktury.CenaKońcowa) as kwota , Faktury.IDklienta  from Faktury
  281.     group by Faktury.IDklienta
  282.     ) as t1
  283. on Klienci.IDklienta = t1.IDklienta
  284. where Faktury.CenaKońcowa = t1.kwota
  285. order by NazwaFirmy asc
  286.  
  287. --Zapytanie zwracajace 3 kolumny : NazwaFirmy, idzamówienia, kwota.
  288. --Jedynie najdroższe zamówienia dla każdego z klientów. (89)+1
  289.  
  290. select t1.NazwaFirmy, IDzamówienia, t1.kwota from (
  291.     select nazwafirmy,z.IDzamówienia, (CenaJednostkowa*Ilość) as kwota  from Klienci as k
  292.     join Zamówienia as z on k.IDklienta = z.IDklienta
  293.     join [Opisy zamówień] as op on op.IDzamówienia = z.IDzamówienia ) as t2
  294. join (
  295.     select nazwafirmy, max(CenaJednostkowa*Ilość) as kwota  from Klienci as k
  296.     join Zamówienia as z on k.IDklienta = z.IDklienta
  297.     join [Opisy zamówień] as op on op.IDzamówienia = z.IDzamówienia
  298.     group by NazwaFirmy) as t1
  299. on t1.kwota=t2.kwota
  300. where t1.NazwaFirmy=t2.NazwaFirmy
  301. order by t1.NazwaFirmy
  302.  
  303. --Zapytanie zwracające 3 kolumny : imię, nazwisko pracownika oraz wartości zamówień przez niego zrealizowanych,
  304. --pod uwagę bierzemy jedynie zamówienia z drugiego kwartału 1997 roku. (93)
  305.  
  306. select Imię,Nazwisko, sum(CenaJednostkowa*Ilość) as 'wartość'
  307. from Zamówienia as z LEFT JOIN [Opisy zamówień] as op
  308. on z.IDzamówienia = op.IDzamówienia LEFT JOIN Pracownicy as p
  309. on p.IDpracownika = z.IDpracownika
  310. where DataZamówienia >= '1997-04-01' and DataZamówienia <= '1997-06-30'
  311. group by Imię,Nazwisko,p.IDpracownika,z.IDzamówienia;
  312.  
  313. --Zapytanie zwracające 2 kolumny : NazwaFirmy (klient), NazwaFirmy (dostawca).
  314. --Dostawca, którego produkty są najczęściej zamawiane przez danego Klienta. (161)
  315.  
  316. select t1.NazwaOdbiorcy, t1.NazwaFirmy from (
  317.     select NazwaOdbiorcy, NazwaFirmy, count(NazwaFirmy) as ile from Zamówienia as z
  318.     join [Opisy zamówień] as o on o.IDzamówienia=z.IDzamówienia
  319.     join Produkty as p on p.IDproduktu=o.IDproduktu
  320.     join Dostawcy as d on d.IDdostawcy=p.IDdostawcy
  321.     group by NazwaOdbiorcy, NazwaFirmy
  322. ) as t1
  323. join (
  324.     select MAX(ile) as maks, NazwaOdbiorcy from (
  325.         select NazwaOdbiorcy, NazwaFirmy, count(NazwaFirmy) as ile from Zamówienia as z
  326.         join [Opisy zamówień] as o on o.IDzamówienia=z.IDzamówienia
  327.         join Produkty as p on p.IDproduktu=o.IDproduktu
  328.         join Dostawcy as d on d.IDdostawcy=p.IDdostawcy
  329.         group by NazwaOdbiorcy, NazwaFirmy
  330.     ) as a
  331.     group by NazwaOdbiorcy
  332. ) as t2
  333. on t1.NazwaOdbiorcy=t2.NazwaOdbiorcy
  334. where t1.ile=t2.maks
  335.  
  336. --Zapytanie zwracające 1 kolumnę : idzamówienia.
  337. --Jedynie zamówienia, na których ilość produktów równa jest średniej ilości produktów na zamówieniu. (283)
  338.  
  339. select IDzamówienia from (
  340.     select IDzamówienia, count(IDproduktu) as ileProduktow from [Opisy zamówień]
  341.     group by IDzamówienia
  342.     having count(IDproduktu) = (
  343.         select avg(ile) from (
  344.             select IDzamówienia, count(idproduktu) as ile from [Opisy zamówień]
  345.         group by IDzamówienia) as t1)
  346.     ) as t2
  347.  
  348. --Zapytanie zwracające 2 kolumny : kraj oraz ilość zamówień z niego realizowanych.
  349. --Jedynie kraje o największej liczbie zamówień. (1)
  350.  
  351. select k.Kraj, count(idzamówienia) as 'Ilosc zamowien'
  352. from Klienci as k
  353. join Zamówienia as z
  354. on z.IDklienta = k.IDklienta
  355. group by k.Kraj
  356. having count(idzamówienia) = (
  357.     select max(ilosc) as 'maks'
  358.     from (
  359.         select k.Kraj, count(z.IDzamówienia) as 'ilosc'
  360.         from Zamówienia as z
  361.         join Klienci as k
  362.         on z.IDklienta = k.IDklienta
  363.         group by k.kraj
  364.     ) as t1
  365. )
  366.  
  367. --Zapytanie zwracające wartość obrotów firmy w drugim półroczu działalności
  368.  
  369. select sum(cenakońcowa) as obroty from Faktury
  370. where DataWysyłki>='1997-06-01' and DataWysyłki<='1997-12-31'
  371.  
  372. --Zapytanie zwracające 2 kolumny : imię, nazwisko.
  373. --Jedynie pracownicy na stanowisku przedstawiciela handlowego. (6)
  374.  
  375. select Imię, Nazwisko from Pracownicy
  376. where Stanowisko = 'Przedstawiciel handlowy'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement