</pre> select * from zawodnicy select distinct kraj from zawodnicy select distinct kraj, waga from zawodnicy -- grupowanie select kraj ,waga from zawodnicy group by kraj --1) jeżeli w grupowaniu chcę wyświetlić kolumnę x to -- ta kolumna musi być umieszczona w sekcji group by -- lub musi być zagregowana --agregacja danych to scalenie wielu wartości w jedną: --np z zastosowaniem funkcji: suma, średnia, odchylenie standardowe,zliczenie -- str 20 select kraj ,sum(waga) suma, max(waga),min(waga),count(waga) from zawodnicy group by kraj select sum(waga),count(wzrost) from zawodnicy select kraj, count(wzrost),count(waga),count(imie),count(id_trenera) from zawodnicy group by kraj select * from zawodnicy select kraj, count(*) from zawodnicy group by kraj select kraj, count(*), count(id_zawodnika) from zawodnicy group by kraj select kraj, max(wzrost) from zawodnicy group by kraj select kraj, count(*) from zawodnicy where wzrost>180 group by kraj select kraj, avg(wzrost) sr from zawodnicy group by kraj order by sr select from where group by order by select kraj from zawodnicy group by kraj select kraj, sum(iif(wzrost>180,1,0)) wys ,sum(iif(wzrost<175,1,0)) nis from zawodnicy group by kraj select kraj, count(iif(wzrost>180,1,null)) wys ,count(iif(wzrost<175,1,null)) nis from zawodnicy group by kraj select kraj, avg(wzrost) from zawodnicy group by kraj having avg(wzrost)>=180 -- str 20 cw 43 select kraj ,sum(iif(wzrost>180,1,0)) from zawodnicy group by kraj having sum(iif(wzrost>180,1,0))>1 select kraj,count(*) from zawodnicy where wzrost>180 group by kraj having count(*)>1 -- dla kazdego zawodnika wypisz nazwę miesiąca w jakim się urodził -- następnie pogrupuj dane wg kraju i nazwy miesiąca select kraj, format(data_ur,'MMMM','pl-pl'),count(*) from zawodnicy group by kraj,format(data_ur,'MMMM','pl-pl') select kraj, format(data_ur,'MMMM','pl-pl'), count(*) from zawodnicy group by rollup (kraj,format(data_ur,'MMMM','pl-pl')) select kraj, sum(waga) from zawodnicy group by kraj select sum(waga) from zawodnicy select kraj, avg(waga) from zawodnicy group by rollup(kraj) select kraj, sum(waga) from zawodnicy group by cube(kraj) select kraj, format(data_ur,'MMMM','pl-pl'), count(*) from zawodnicy group by cube (kraj,format(data_ur,'MMMM','pl-pl')) -- podzapytania select imie, waga from zawodnicy select kraj,waga, imie from (select kraj, waga, wzrost from zawodnicy) t select kraj,waga, imie from (select kraj, waga, wzrost from zawodnicy) t select kraj from (select kraj,waga from (select kraj,waga,wzrost from zawodnicy) t) k select imie , w from (select imie, waga+1 w from zawodnicy) t where w>60 --group by --having --order by select imie, nazwisko , format(waga/power(wzrost/100.0,2),'0.00') bmi from zawodnicy where format(waga/power(wzrost/100.0,2),'0.00')>20 select imie,nazwisko,format(bmi,'0.00') bmi from (select imie, nazwisko , waga/power(wzrost/100.0,2) bmi from zawodnicy) t where bmi>20 -- str 20 zad 43 -- bez having select kraj, sr from (select kraj, avg(wzrost) sr from zawodnicy group by kraj) t where sr>=180 select kraj ,ile from (select kraj, count(*) ile from zawodnicy where wzrost>180 group by kraj) t where ile>1 select iif(kraj is null,'total',kraj),sr from (select kraj, avg(wzrost) sr from zawodnicy group by rollup(kraj)) t -- podzapytania: -- w sekcji from TRZEBA aliasować -- w sekcji select MOZNA ale nie trzeba aliasowac -- w sekcji where NIE MOZNA aliasowac select kraj, (select avg(wzrost) from zawodnicy ) t from zawodnicy -- dla kazdego zawodnika wypisz kraj i średni wzrost z JEGO kraju select kraj, (select avg(wzrost) from zawodnicy where kraj=zawodnicy.kraj ) t from zawodnicy select kraj, imie, nazwisko, (select avg(wzrost) from zawodnicy where kraj=z.kraj ) [średnia kraju] from zawodnicy z -- podzapytanie skorelowane select kraj, avg(wzrost) from zawodnicy group by kraj -- dla każdego zawodnika (imie, nazwisko, wzrost) wypisz jeszcze o ile cm jest on niższy -- od najwyższego zawodnika z jego kraju select imie,nazwisko,[max z kraju]-wzrost roznica from (select imie, nazwisko,wzrost, (select max(wzrost) from zawodnicy where kraj =z.kraj) [max z kraju] from zawodnicy z) t where [max z kraju]-wzrost >0 select imie, nazwisko, roznica from (select imie,nazwisko,[max z kraju]-wzrost roznica from (select imie, nazwisko,wzrost, (select max(wzrost) from zawodnicy where kraj =z.kraj) [max z kraju] from zawodnicy z) t) k where roznica>0 -- podzapytania w sekcji where select imie, nazwisko,waga from zawodnicy where waga > 56 -- wypisz tylko zawodnikow, ktorzy wiecej ważą od sredniej wagi ze wszystkich zawodnikow -- w podzapytania w sekcji where nie można aliasować select imie, nazwisko, waga, (select avg(waga) from zawodnicy) sr from zawodnicy where waga > (select avg(waga) from zawodnicy) -- wypisz tylko zawodnikow, ktorych waga jest wieksza od sredniej z jego kraju -- podzapytanie skorelowane select imie, nazwisko, waga, (select avg(waga) from zawodnicy) sr from zawodnicy z where waga > (select avg(waga) from zawodnicy where kraj=z.kraj) select imie, nazwisko ,kraj from zawodnicy where wzrost in (175,167,168) -- wypisz tylko zawodnikow, ktorych wzrost jest taki sam jak wzrost polakow select imie, nazwisko ,kraj from zawodnicy where waga in (select waga from zawodnicy where kraj = 'pol') select imie, nazwisko ,kraj from zawodnicy where waga >all (select waga from zawodnicy where kraj = 'pol') select imie, nazwisko ,kraj from zawodnicy where waga > (select max(waga) from zawodnicy where kraj = 'pol') select imie, nazwisko ,kraj from zawodnicy where waga >any (select waga from zawodnicy where kraj = 'pol') select imie, nazwisko ,kraj from zawodnicy where waga >some (select waga from zawodnicy where kraj = 'pol') select imie, nazwisko ,kraj from zawodnicy where waga > (select min(waga) from zawodnicy where kraj = 'pol') select imie, nazwisko ,kraj from zawodnicy where waga between 50 and (select max(waga) from zawodnicy where kraj='pol') -- wypisz zawodnikow, ktorzy urodzili w miesiącu późniejszym niż -- miesiąc urodzenia najcięższego niemca ale wcześniej niż miesiąc najmłodszego polaka select month(data_ur) from zawodnicy where data_ur= (select max(data_ur) from zawodnicy where kraj='pol') select MONTH(data_ur) from zawodnicy where waga=(select max(waga) from zawodnicy where kraj = 'ger') select imie, nazwisko from zawodnicy where MONTH(data_ur) between (select MONTH(data_ur) from zawodnicy where waga=(select max(waga) from zawodnicy where kraj = 'ger')) and (select month(data_ur) from zawodnicy where data_ur= (select max(data_ur) from zawodnicy where kraj='pol') ) select * from zawodnicy select * from trenerzy select imie,nazwisko,imie_t,nazwisko_t, zawodnicy.id_trenera from zawodnicy left join trenerzy on zawodnicy.id_trenera=trenerzy.id_trenera select imie,nazwisko,imie_t,nazwisko_t, zawodnicy.id_trenera from zawodnicy right join trenerzy on zawodnicy.id_trenera=trenerzy.id_trenera select imie,nazwisko,imie_t,nazwisko_t, zawodnicy.id_trenera from zawodnicy join trenerzy on zawodnicy.id_trenera=trenerzy.id_trenera select imie,nazwisko,imie_t,nazwisko_t, zawodnicy.id_trenera from zawodnicy full join trenerzy on zawodnicy.id_trenera=trenerzy.id_trenera select z.imie,z.nazwisko,t.imie_t,t.nazwisko_t, z.id_trenera from zawodnicy z left join trenerzy t on z.id_trenera=t.id_trenera select z.imie, t.imie_t, z.id_trenera,t.id_trenera from zawodnicy z, trenerzy t where z.id_trenera = t.id_trenera select z.imie, t.imie_t, z.id_trenera,t.id_trenera from zawodnicy z, trenerzy t , skocznie select z.imie, t.imie_t, z.id_trenera,t.id_trenera from (zawodnicy z cross join trenerzy t) cross join skocznie -- wypisz wszystkie nazwy skoczni wraz z nazwami miast gdzie się znajdują select s.*, m.nazwa_miasta from skocznie s left join miasta m on s.id_miasta=m.id_miasta -- wypisz pary trener-zawodnik urodzonych tego samego miesiąca ale -- niekoniecznie, że jeden trenuje drugiego select * from zawodnicy z join trenerzy t on MONTH(z.data_ur)=MONTH(t.data_ur_t) -- wypisz pary-trener zawodnik urodzonych tego samego miesiaca i -- zachowując relację, żę jeden trenuje drugiego select * from zawodnicy z join trenerzy t on MONTH(z.data_ur)=MONTH(t.data_ur_t) and z.id_trenera = t.id_trenera -- wypisz pary zawodników (zawodnik-zawodnik) takie, że długość liter imienia -- jest taka sama. Usun wytąpienia samego ze sobą np: Malysz-Malysz select z1.imie, z2.imie from zawodnicy z1 join zawodnicy z2 on len(z1.imie)=len(z2.imie) and z1.imie<>z2.imie -- wypisz pary zawodnik-skocznia z tego samego kraju select * from zawodnicy z join skocznie s on z.kraj = s.kraj_skoczni -- wypisz pary zawodnikow urodzonych tego samego dnia tygodnia i z tego samego kraju select * from zawodnicy z1 join zawodnicy z2 on day(z1.data_ur) = day(z2.data_ur) and z1.kraj = z2.kraj and z1.nazwisko <> z2.nazwisko -- wypisz nazwy zawodów wraz z miastami gdzie się znajdywały te skocznie select m.nazwa_miasta, z.nazwa from zawody z left join skocznie s on z.id_skoczni=s.id_skoczni left join miasta m on m.id_miasta = s.id_miasta -- 1)wypisz nazwy skoczkow wraz z nazwami zawodow w jakich startowali select z.imie + ' ' + z.nazwisko, zw.nazwa from zawodnicy z left join uczestnictwa u on z.id_zawodnika=u.id_zawodnika left join zawody zw on zw.id_zawodow=u.id_zawodow -- 2)wypisz nazwy trenerów wraz z nazwami miast jakie musieli odwiedzić w swojej karierze select distinct t.nazwisko_t , m.nazwa_miasta from trenerzy t left join zawodnicy z on z.id_trenera=t.id_trenera left join uczestnictwa u on u.id_zawodnika=z.id_zawodnika left join zawody w on w.id_zawodow = u.id_zawodow left join skocznie s on s.id_skoczni = w.id_skoczni left join miasta m on m.id_miasta = s.id_miasta -- 3)wypisz trenerow wraz z informacja ilu zawodnikow trenuje select t.nazwisko_t, COUNT(z.id_zawodnika) from trenerzy t left join zawodnicy z on z.id_trenera=t.id_trenera group by t.nazwisko_t order by 2 -- 4)wypisz zawodnikow wraz z informacją ile razy startowali w zawodach select z.nazwisko, count(z.nazwisko), count(w.id_zawodow) from zawodnicy z left join uczestnictwa u on z.id_zawodnika=u.id_zawodnika left join zawody w on w.id_zawodow=u.id_zawodow group by z.nazwisko select z.nazwisko, count(z.nazwisko), count(u.id_zawodow) from zawodnicy z left join uczestnictwa u on z.id_zawodnika=u.id_zawodnika group by z.nazwisko -- 5)wypisz wszystkie (12) nazwy miesiecy i napisz ile osób urodziło się w danym miesiacu select t.nazwaMiesiaca,coalesce(k.liczbaZawodnikow,0) -- iif(k.liczbaZawodnikow is null,0,k.liczbaZawodnikow) from (select FORMAT(DATEFROMPARTS(2000,id_zawodnika,1),'MMMM','pl-pl') nazwaMiesiaca from zawodnicy where id_zawodnika<13) t left join (select MONTH(data_ur) numerMiesiaca, COUNT(*) liczbaZawodnikow from zawodnicy group by MONTH(data_ur)) k on t.nazwaMiesiaca=FORMAT(DATEFROMPARTS(2000,k.numerMiesiaca,1),'MMMM','pl-pl') -- 6)w którym mieście skakało najwięcej zawodników? select top 1 m.nazwa_miasta, COUNT(u.id_zawodnika) ileStartow from uczestnictwa u left join zawody z on z.id_zawodow=u.id_zawodow left join skocznie s on s.id_skoczni=z.id_skoczni left join miasta m on m.id_miasta = s.id_miasta group by m.nazwa_miasta order by ileStartow desc -- 7) wypisz zawodnikow ciezszych niz srednia ze swojego kraju select imie, nazwisko, z.kraj, t.sr from zawodnicy z left join (select kraj, AVG(waga) sr from zawodnicy group by kraj) t on z.kraj=t.kraj where z.waga>t.sr -- 8) wypisz wszystkich zawodnikow, ktorych wzrost jest drugi co do wielkosci select imie, nazwisko, wzrost from zawodnicy order by wzrost desc select imie, nazwisko , wzrost from zawodnicy where wzrost = (select max(wzrost) from zawodnicy where wzrost < (select MAX(wzrost) from zawodnicy)) SELECT {distinct} [podzapytania] FROM {join...} [podzapytania] WHERE [podzapytania] GROUP BY HAVING ORDER BY -- operacje teoriomnogosciowe go select imie, nazwisko , waga from zawodnicy union select imie_t, nazwisko_t, 0 from trenerzy select AVG(wzrost), AVG(waga) from zawodnicy select imie, nazwisko, kraj , wzrost, waga from zawodnicy where wzrost > 178 union all select imie,nazwisko,kraj, wzrost, waga from zawodnicy where waga > 61 select imie, nazwisko, kraj , wzrost, waga from zawodnicy where wzrost > 178 except select imie,nazwisko,kraj, wzrost, waga from zawodnicy where waga > 61 select imie, nazwisko, kraj , wzrost, waga from zawodnicy where wzrost > 178 intersect select imie,nazwisko,kraj, wzrost, waga from zawodnicy where waga > 61 -- wypisz imie i nazwisko zawodnikow i trenerow wraz z informacją o kraju -- dla trenerow wypisz null select imie, nazwisko, kraj from zawodnicy union select imie_t, nazwisko_t, null from trenerzy order by kraj <pre>