Materiały z zajęć

Materiały z zajęć

use Zawodnicy

select * from uczestnictwa

-- wypisz trenerow i trenowanych przez nich zawodnikow

select t.imie_t + ' ' + z.imie
from trenerzy t left join zawodnicy z on t.id_trenera = z.id_trenera

select z.imie
from zawodnicy z

-- wypisz w jednej kolumnie wszystkich
-- zawodnikow, wraz z nazwami zawodów w jakich startowali
select z.imie + ' ' + za.nazwa
from zawodnicy z join uczestnictwa u on z.id_zawodnika=u.id_zawodnika
join zawody za on za.id_zawodow = u.id_zawodow
where z.imie is not null

-- wypisz pary zawodnikow, tak, że ostatnia litera imienia pierwszego
-- jest taka sama jak pierwsza litera drugiego
-- np: Adam - Marcin itd....

select z1.imie , z2.imie
from zawodnicy z1 join zawodnicy z2 on RIGHT(z1.imie,1)=LEFT(z2.imie,1)
and z1.imie <> z2.imie

-- wypisz wszystkich trenerów wraz z nazwami miast, jakie musieli odwiedzić
-- w czasie swojej kariery (bo jeździli z zawodnikami na zawody)

-- trenerzy--> zawodnicy-->uczestnictwa-->zawody-->skocznie-->miasta
select distinct t.imie_t, m.nazwa_miasta
from trenerzy t join zawodnicy z on t.id_trenera = z.id_trenera
join uczestnictwa u on u.id_zawodnika = z.id_zawodnika
join zawody zw on zw.id_zawodow = u.id_zawodow
join skocznie s on s.id_skoczni = zw.id_skoczni
join miasta m on m.id_miasta = s.id_miasta
-- wypisz trenerów, którzy nikogo nie trenują
select t.*, z.*
from trenerzy t left join zawodnicy z on z.id_trenera = t.id_trenera
where z.id_zawodnika is null
-- wypisz zawodnikow, ktorzy nie maja trenera

-- wypisz nazwy skoczni wraz z zawodnikami z tego samego kraju co skocznia
select s.nazwa_skoczni, z.imie
from skocznie s join zawodnicy z on s.kraj_skoczni = z.kraj

-- wypisz trenerów, którzy mają wcześniej urodziny niż ich podopieczni

select t.imie_t , t.data_ur_t, z.imie, z.data_ur
from trenerzy t join zawodnicy z on
DATEFROMPARTS(2000,month(t.data_ur_t),day(t.data_ur_t)) <
DATEFROMPARTS(2000,month(z.data_ur),day(z.data_ur))
and t.id_trenera = z.id_trenera

select DATEPART(dy,getdate())

-- wypisac imiona zawodnikow wraz informacją czy jego
-- wzrost jest wysoki, sredni czy niski w zaleznosci od tego
-- czy jest > 175 lub > 180

select imie, wzrost , iif(wzrost>180,'wysoki',
iif(wzrost<=175,'niski','sredni')) typ
from zawodnicy

select imie,
case
when wzrost>180 then 'wysoki'
when wzrost<=175 then 'niski'
else 'sredni'
end typ
from zawodnicy

-- bmi to waga przez wzrost^2 w metrach

-- wypisz osoby urodzone później niż w kwietniu
select *
from zawodnicy
where MONTH(data_ur) >= 5

select *
from zawodnicy
where MONTH(data_ur) > 4

--32
select imie, nazwisko, iif(waga/power(wzrost/100.0,2)>=20,'ok','zle'),
waga/power(wzrost/100.0,2) bmi
from zawodnicy

--33
select imie_t, nazwisko_t, iif(data_ur_t is not null,'znana','nie')
, data_ur_t
from trenerzy

--34
select imie_t, nazwisko_t,
iif(data_ur_t is not null,format(data_ur_t,'dd-MM-yyyy'),'nie')
, data_ur_t
from trenerzy

select imie_t, nazwisko_t,
coalesce(format(data_ur_t,'dd-MM-yyyy'),'nie')
from trenerzy

select FORMAT(getdate(),'MMMM dddd', 'pl-pl')
select FORMAT(getdate(),'MMMM dddd', 'zh-cn')

select FORMAT(GETDATE(),'dd*yy MM \mie\siac')

select FORMAT(GETDATE(),'dd*yy MM "miesiac"')

--35
select
case
when kraj = 'pol' then 'pan '
when kraj = 'ger' then 'herr '
when kraj = 'aut' then 'herr '
when kraj = 'usa' then 'mr '
else ''
end + imie + ' ' + nazwisko
from zawodnicy
select
case kraj
when 'pol' then 'pan '
when 'ger' then 'herr '
when 'aut' then 'herr '
when 'usa' then 'mr '
else ''
end + imie + ' ' + nazwisko
from zawodnicy
--36

select imie, nazwisko,
case
when DATEPART(dy,data_ur)< DATEPART(dy,GETDATE()) then 'mial'
else 'jeszcze nie'
end , data_ur
from zawodnicy

select format(10/3.0,'00.000')

select imie, nazwisko, round(waga/power(wzrost/100.0,2),2),
format(waga/power(wzrost/100.0,2),'00.00')
from zawodnicy

select distinct kraj, waga from zawodnicy

select kraj, sum(waga),avg(waga), max(wzrost),
count(waga),count(id_trenera), COUNT(*)
from zawodnicy
--where
group by kraj
--order by

select max(wzrost) from zawodnicy

-- str 20 cw 37-41

select kraj, max(wzrost) [maksymalny wzrost]
from zawodnicy
group by kraj

select kraj, count(wzrost)
from zawodnicy
where wzrost > 180
group by kraj

select kraj, avg(wzrost) sr
from zawodnicy
--where
group by kraj
order by sr

select kraj,
sum(case
when wzrost >180 then 1
else 0
end) wys,
sum(iif(wzrost < 175,1,0)) nis
from zawodnicy
group by kraj

select * from zawodnicy

Leave a comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *