Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- https://pastebin.com/JzWfpnvE
- --Zapytanie zwracające 3 kolumny : imię, nazwisko oraz ilość zrealizowanych zamówień.
- --Jedynie pracownicy / osoba o największej ilość zamówień.(1)
- select p.Imię, p.Nazwisko, count(z.IDpracownika) as maks from Zamówienia z
- join Pracownicy p on (p.IDpracownika = z.IDpracownika)
- group by Imię, Nazwisko
- having count(z.IDpracownika) = (
- select max(suma) from (
- select IDpracownika, count(z.IDpracownika) as suma from Zamówienia z
- group by z.IDpracownika
- ) as t1)
- --Zapytanie zwracające 3 kolumny : Imię, Nazwisko, ilość zamówień zrealizowanych po terminie.
- --Jedynie osoba z najwiekszą ilością zamówien po terminie. (1)
- select Imię, Nazwisko, count(ilość) as ilość from Zamówienia as z join Pracownicy as p
- on z.IDpracownika = p.IDpracownika
- join [Rozszerzone opisy zamówień] as ro
- on ro.IDzamówienia = z.IDzamówienia
- where DataWysyłki>DataWymagana
- group by Imię, Nazwisko
- having count(Ilość) = (select max(t1.ile) from (select COUNT(ilość) as ile from Zamówienia as z join Pracownicy as p
- on z.IDpracownika = p.IDpracownika
- join [Rozszerzone opisy zamówień] as ro
- on ro.IDzamówienia = z.IDzamówienia
- where DataWysyłki>DataWymagana
- group by Imię, Nazwisko)as t1)
- --Zapytanie zwraca 2 kolumny : imie, nazwisko (pracownik).
- --Jedynie osoby, które zrealizowaly najwiecej zamówien w kraju swojego pochodzenia. (1)
- select Imię, Nazwisko from pracownicy
- where idpracownika in (
- select idpracownika from (
- select idpracownika, count(idzamówienia) as ile from Zamówienia
- group by idpracownika
- ) as t2
- where ile in (
- select max(ile) from (
- select idpracownika, count(idzamówienia) as ile from Zamówienia
- group by idpracownika
- ) as t1
- )
- )
- --Zapytanie zwracające 2 kolumny : idzamówienia, wartość zamówienia.
- --Jedynie najdroższe zamówienie w USA. (1)
- select top 1 o.IDzamówienia, od.CenaJednostkowa from Zamówienia as o
- join [Opisy zamówień] as od on od.IDzamówienia=o.IDzamówienia
- join Klienci as c on o.IDKlienta=c.IDklienta
- where c.Kraj like('USA')
- order by CenaJednostkowa desc
- --Zapytanie zwracające 2 kolumny : Orderid, ilość różnych produktów na zamówieniu.
- --Jedynie zamówienia z największą ilością różnych produktów. (1)
- select IDzamówienia, count(IDzamówienia) as ile from [Opisy zamówień]
- group by IDzamówienia
- having count(IDzamówienia) = (
- select max(t1.maks)
- from (
- select count(IDzamówienia) as maks from [Opisy zamówień]
- group by IDzamówienia
- ) as t1
- )
- --Zapytanie zwracające 2 kolumny : nazwaFirmy (dostawca), ilość produktów.
- --Jedynie dostawca dostarczający najwięcej produktów w kategorii napoje. (1)
- select NazwaFirmy, count(NazwaFirmy) as ile from Produkty as p
- join Kategorie as k on p.IDkategorii=k.IDkategorii
- join Dostawcy as d on d.IDdostawcy=p.IDdostawcy
- where NazwaKategorii = 'Napoje'
- group by NazwaFirmy
- having count(p.IDdostawcy)=(
- select max(ile) from (select IDdostawcy, count(IDdostawcy) as ile from Produkty as p
- join Kategorie as k on p.IDkategorii=k.IDkategorii
- where NazwaKategorii = 'Napoje'
- group by IDdostawcy) as a)
- --znajdz najtanszy i najdrozszy produkt dostarczony przez
- --dostawce ktorego nazwa zaczyna sie na litere od c-p
- --podaj z jakiej kategorii on pochodzi oraz w dodatkowej
- --kolumnie czy jest to najdrozszy czy najtanszy produkt
- --nazwa kategorii
- --najdrozszy produkt ma dostawce na litere A
- select 'najdrozszy' as 'drogi_tani', d.NazwaFirmy , p.NazwaProduktu , p.CenaJednostkowa , k.NazwaKategorii
- from Dostawcy as d
- inner join produkty as p
- on d.IDdostawcy=p.IDdostawcy
- inner join kategorie as k
- on k.IDkategorii=p.IDkategorii
- where (lower(substring(d.NazwaFirmy,1,1))) between 'a' and 'p'
- and p.CenaJednostkowa in (select max(p.cenajednostkowa)
- from produkty as p
- inner join Dostawcy as d
- on d.IDdostawcy=p.IDdostawcy)
- union
- select 'najtanszy' as 'drogi_tani', d.NazwaFirmy , p.NazwaProduktu , p.CenaJednostkowa , k.NazwaKategorii
- from Dostawcy as d
- inner join produkty as p
- on d.IDdostawcy=p.IDdostawcy
- inner join kategorie as k
- on k.IDkategorii=p.IDkategorii
- where (lower(substring(d.NazwaFirmy,1,1))) between 'a' and 'p'
- and p.CenaJednostkowa in
- (select min(p.cenajednostkowa)
- from produkty as p
- inner join Dostawcy as d
- on d.IDdostawcy=p.IDdostawcy)
- --Zapytanie zwracajace 3 kolumny : imię, nazwisko, id zamówienia.
- --Jedynie zamówienia z 3 kwartału 1996 zrealizowane po terminie.(3)
- select imię, nazwisko, idzamówienia
- from (
- select idzamówienia, idpracownika
- from Zamówienia
- where DataZamówienia >= '1996-07-01' and DataZamówienia <= '1996-09-30'
- and DataWysyłki >= '1996-07-01' and DataWysyłki <= '1996-09-30'
- and DataWysyłki > DataWymagana
- ) as t1
- join Pracownicy as p on t1.IDpracownika=p.IDpracownika
- -- Zapytanie zwracające 3 kolumny : imię, nazwisko, ilość zrealizowanych zamówień w 1997.
- --Jedynie pracownicy, którzy w roku 1997 wykonali więcej niż wynosiła średnia ilość zrealizowanych zamówień na pracownika. (4)
- select p.Imię,p.Nazwisko, count(p.IDpracownika) as ilość from Pracownicy as p
- join Zamówienia as z
- on p.IDpracownika = z.IDpracownika
- where DataZamówienia between '1997/01/01' and '1997/12/31'
- group by p.Imię,p.Nazwisko
- having count(p.IDpracownika) > (
- select avg(t1.suma) as srednia
- from (
- select p.IDpracownika, count(p.IDpracownika) as suma from Pracownicy as p
- join Zamówienia as z
- on p.IDpracownika = z.IDpracownika
- where DataZamówienia between '1997/01/01' and '1997/12/31'
- group by p.IDpracownika
- ) as t1
- )
- --Zapytanie zwracające 3 kolumny : imię, nazwisko, id zamówienia.
- --Jedynie zamówienia z 3 kwartału 1996 zrealizowane po terminie. (5)
- select p.Imię, p.nazwisko, z.IDzamówienia from Pracownicy as p
- join Zamówienia as z on p.IDpracownika = z.IDpracownika
- where datepart(month, z.DataZamówienia)>06 and datepart(month, z.DataZamówienia)<10 and
- datepart(year, z.DataZamówienia)=1996 and
- z.DataWymagana-z.DataWysyłki<0
- --Zapytanie zwracające 3 kolumny : Nazwa firmy (dostawca), Nazwa kategorii,
- --ilość produktów dostarczanych w danej kategorii przez wskazaną firmę. Jedynie dostawcy z USA. (5)*/
- select NazwaFirmy, NazwaKategorii, count(d.IDdostawcy) as ile from Dostawcy as d
- join Produkty as p on p.IDdostawcy=d.IDdostawcy
- join Kategorie as k on k.IDkategorii=p.IDkategorii
- where Kraj='USA'
- group by NazwaFirmy, NazwaKategorii
- --Zapytanie zwracające 2 kolumny : nazwę kategorii oraz nazwę produktu.
- --Jedynie najdroższe produkty dla każdej z kategorii. (8)
- select NazwaKategorii, NazwaProduktu from (
- select max(CenaJednostkowa) as maks, IDkategorii from Produkty
- group by IDkategorii
- ) as t1
- join Kategorie as k
- on k.IDkategorii = t1.IDkategorii
- join Produkty as p on p.IDkategorii=k.IDkategorii
- where CenaJednostkowa=maks
- --Zapytanie zwracające 2 kolumny : nazwę kategorii oraz nazwę firmy.
- --Jedynie firmy, które dostarczaja najwięcej produktów w danej kategorii. (14)
- select NazwaKategorii,NazwaFirmy from (
- select k.NazwaKategorii,d.NazwaFirmy,k.idKategorii,p.idproduktu
- from Produkty as p join Kategorie as k
- on p.IDkategorii=k.IDkategorii
- join Dostawcy as d
- on d.IDdostawcy=p.IDdostawcy
- )as t1
- join (
- select max(p.idproduktu)as 'maks',k.idkategorii
- from Produkty as p join Kategorie as k
- on p.IDkategorii=k.IDkategorii
- group by k.IDkategorii
- )as t2
- on t1.IDkategorii=t2.IDkategorii
- where idproduktu=maks
- --Zapytanie zwracające 2 kolumny : kraj (klient), wartość zamówienia.
- --Jedynie zamówienia realizowane w roku 1998 (21)
- select z.KrajOdbiorcy, sum(t2.suma) as wartość_zamówienia from Zamówienia as z
- join
- (select z.IDzamówienia, sum(t1.wartosc) as suma from Zamówienia as z
- join
- (select IDzamówienia, (oz.ilość * oz.CenaJednostkowa) as wartosc from [Opisy zamówień] as oz
- group by IDzamówienia, oz.ilość, oz.CenaJednostkowa) as t1
- on z.IDzamówienia = t1.IDzamówienia
- group by z.IDzamówienia) as t2
- on z.IDzamówienia = t2.IDZamówienia
- where z.DataWysyłki between '1998-01-01' and '1999-01-01'
- group by z.KrajOdbiorcy
- --Zapytanie zwracające 2 kolumny : Kraj (klient), NazwaFirmy (spedytor).
- --Jedynie najczęściej wykorzystywani spedytorzy na terenie danego kraju. (23)
- select t3.KrajOdbiorcy, t3.[Spedytorzy.NazwaFirmy] from (
- select KrajOdbiorcy, max(maks) as ile from (
- select KrajOdbiorcy, [Spedytorzy.NazwaFirmy], count([Spedytorzy.NazwaFirmy]) as maks from Faktury
- group by KrajOdbiorcy, [Spedytorzy.NazwaFirmy]
- ) as t1
- group by KrajOdbiorcy) as t2
- join (select KrajOdbiorcy, [Spedytorzy.NazwaFirmy], count([Spedytorzy.NazwaFirmy]) as maks from Faktury
- group by KrajOdbiorcy, [Spedytorzy.NazwaFirmy]
- ) as t3
- on t3.KrajOdbiorcy=t2.KrajOdbiorcy
- group by t3.KrajOdbiorcy,t2.ile, t3.maks, t3.[Spedytorzy.NazwaFirmy]
- having ile=maks
- --Zapytanie zwracające 3 kolumny : kraj (klient), imię, nazwisko.
- --Jedynie pracowicy realizujący najwięcej zamówień z danego kraju. (28)
- select krajodbiorcy as Kraj, imię as Imię, nazwisko as Nazwisko from (
- select t3.krajodbiorcy, idpracownika from (
- select krajodbiorcy, max(ile) as maks from (
- select KrajOdbiorcy, idpracownika, count(idzamówienia) as ile from Zamówienia
- group by IDpracownika, KrajOdbiorcy) as t1
- group by KrajOdbiorcy) as t3
- join (
- select KrajOdbiorcy, IDpracownika, ile from (
- select KrajOdbiorcy, idpracownika, count(idzamówienia) as ile from Zamówienia
- group by IDpracownika, KrajOdbiorcy ) as t2
- ) as t4
- on t3.KrajOdbiorcy=t4.KrajOdbiorcy
- where t3.maks=t4.ile ) as t5
- join Pracownicy as p on t5.IDpracownika=p.IDpracownika
- --Zapytanie zwracające 2 kolumny : Kraj, Nazwaproduktu.
- --Jedynie produkty najczęściej zamawiane w danym kraju. (46)
- select tg1.KrajOdbiorcy,tg2.NazwaProduktu from (
- select t1.KrajOdbiorcy, max(t1.ilosc) as maks from (
- select z.KrajOdbiorcy, p.NazwaProduktu, count(oz.IDzamówienia) as ilosc from Zamówienia as z
- join [Opisy zamówień] as oz
- on z.IDzamówienia=oz.IDzamówienia
- join Produkty as p
- on p.IDproduktu=oz.IDproduktu
- group by z.KrajOdbiorcy, p.NazwaProduktu
- ) as t1
- group by t1.KrajOdbiorcy
- ) as tg1
- join (
- select z.KrajOdbiorcy, p.NazwaProduktu, count(oz.IDzamówienia) as iloscc from Zamówienia as z
- join [Opisy zamówień] as oz
- on z.IDzamówienia=oz.IDzamówienia
- join Produkty as p
- on p.IDproduktu=oz.IDproduktu
- group by z.KrajOdbiorcy, p.NazwaProduktu
- ) as tg2
- on tg1.KrajOdbiorcy=tg2.KrajOdbiorcy
- where tg1.maks=tg2.iloscc
- order by KrajOdbiorcy asc
- --Zapytanie zwracające 3 kolumny : NazwaFirmy, idzamówienia, kwota.
- --Jedynie najdroższe zamówienia dla każdego z klientów. (89)
- select NazwaFirmy, Faktury.IDzamówienia, Faktury.CenaKońcowa as kwota from Klienci
- join Faktury
- on Klienci.IDklienta = Faktury.IDklienta
- join (
- select max(Faktury.CenaKońcowa) as kwota , Faktury.IDklienta from Faktury
- group by Faktury.IDklienta
- ) as t1
- on Klienci.IDklienta = t1.IDklienta
- where Faktury.CenaKońcowa = t1.kwota
- order by NazwaFirmy asc
- --Zapytanie zwracajace 3 kolumny : NazwaFirmy, idzamówienia, kwota.
- --Jedynie najdroższe zamówienia dla każdego z klientów. (89)+1
- select t1.NazwaFirmy, IDzamówienia, t1.kwota from (
- select nazwafirmy,z.IDzamówienia, (CenaJednostkowa*Ilość) as kwota from Klienci as k
- join Zamówienia as z on k.IDklienta = z.IDklienta
- join [Opisy zamówień] as op on op.IDzamówienia = z.IDzamówienia ) as t2
- join (
- select nazwafirmy, max(CenaJednostkowa*Ilość) as kwota from Klienci as k
- join Zamówienia as z on k.IDklienta = z.IDklienta
- join [Opisy zamówień] as op on op.IDzamówienia = z.IDzamówienia
- group by NazwaFirmy) as t1
- on t1.kwota=t2.kwota
- where t1.NazwaFirmy=t2.NazwaFirmy
- order by t1.NazwaFirmy
- --Zapytanie zwracające 3 kolumny : imię, nazwisko pracownika oraz wartości zamówień przez niego zrealizowanych,
- --pod uwagę bierzemy jedynie zamówienia z drugiego kwartału 1997 roku. (93)
- select Imię,Nazwisko, sum(CenaJednostkowa*Ilość) as 'wartość'
- from Zamówienia as z LEFT JOIN [Opisy zamówień] as op
- on z.IDzamówienia = op.IDzamówienia LEFT JOIN Pracownicy as p
- on p.IDpracownika = z.IDpracownika
- where DataZamówienia >= '1997-04-01' and DataZamówienia <= '1997-06-30'
- group by Imię,Nazwisko,p.IDpracownika,z.IDzamówienia;
- --Zapytanie zwracające 2 kolumny : NazwaFirmy (klient), NazwaFirmy (dostawca).
- --Dostawca, którego produkty są najczęściej zamawiane przez danego Klienta. (161)
- select t1.NazwaOdbiorcy, t1.NazwaFirmy from (
- select NazwaOdbiorcy, NazwaFirmy, count(NazwaFirmy) as ile from Zamówienia as z
- join [Opisy zamówień] as o on o.IDzamówienia=z.IDzamówienia
- join Produkty as p on p.IDproduktu=o.IDproduktu
- join Dostawcy as d on d.IDdostawcy=p.IDdostawcy
- group by NazwaOdbiorcy, NazwaFirmy
- ) as t1
- join (
- select MAX(ile) as maks, NazwaOdbiorcy from (
- select NazwaOdbiorcy, NazwaFirmy, count(NazwaFirmy) as ile from Zamówienia as z
- join [Opisy zamówień] as o on o.IDzamówienia=z.IDzamówienia
- join Produkty as p on p.IDproduktu=o.IDproduktu
- join Dostawcy as d on d.IDdostawcy=p.IDdostawcy
- group by NazwaOdbiorcy, NazwaFirmy
- ) as a
- group by NazwaOdbiorcy
- ) as t2
- on t1.NazwaOdbiorcy=t2.NazwaOdbiorcy
- where t1.ile=t2.maks
- --Zapytanie zwracające 1 kolumnę : idzamówienia.
- --Jedynie zamówienia, na których ilość produktów równa jest średniej ilości produktów na zamówieniu. (283)
- select IDzamówienia from (
- select IDzamówienia, count(IDproduktu) as ileProduktow from [Opisy zamówień]
- group by IDzamówienia
- having count(IDproduktu) = (
- select avg(ile) from (
- select IDzamówienia, count(idproduktu) as ile from [Opisy zamówień]
- group by IDzamówienia) as t1)
- ) as t2
- --Zapytanie zwracające 2 kolumny : kraj oraz ilość zamówień z niego realizowanych.
- --Jedynie kraje o największej liczbie zamówień. (1)
- select k.Kraj, count(idzamówienia) as 'Ilosc zamowien'
- from Klienci as k
- join Zamówienia as z
- on z.IDklienta = k.IDklienta
- group by k.Kraj
- having count(idzamówienia) = (
- select max(ilosc) as 'maks'
- from (
- select k.Kraj, count(z.IDzamówienia) as 'ilosc'
- from Zamówienia as z
- join Klienci as k
- on z.IDklienta = k.IDklienta
- group by k.kraj
- ) as t1
- )
- --Zapytanie zwracające wartość obrotów firmy w drugim półroczu działalności
- select sum(cenakońcowa) as obroty from Faktury
- where DataWysyłki>='1997-06-01' and DataWysyłki<='1997-12-31'
- --Zapytanie zwracające 2 kolumny : imię, nazwisko.
- --Jedynie pracownicy na stanowisku przedstawiciela handlowego. (6)
- select Imię, Nazwisko from Pracownicy
- where Stanowisko = 'Przedstawiciel handlowy'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement