Szkolenie SQL Kraków dzień 3 B

create table zawodnicy_tl
(
	id_zawodnika int primary key identity(1,1),
	id_trenera int,
	imie varchar(255),
	nazwisko varchar(255),
	kraj varchar(3),
	wzrost decimal(5,2),
	waga decimal(5,2),
	data_ur datetime2
)
drop table zawodnicy_tl


insert into zawodnicy_tl values 
	(1,'jan','kowalski','pol',185,67,'19650420')


insert into zawodnicy_tl values 
	(1,'adam','nowak','pol',185,67,'19650420')


insert into zawodnicy_tl values 
	(1,'adam','nowak','pol',185,67,'19650420'),
	(1,'jan','kowalski','pol',185,67,'19650420')

insert into zawodnicy_tl (imie,nazwisko) values ('marcin','adamski')

insert into zawodnicy_tl values 
	(1, 'adam',null,'pol',123,54,'19231212')


select * from zawodnicy_tl


delete zawodnicy_tl where id_zawodnika in (2,3,4)

select * from zawodnicy_tl  where id_zawodnika in (2,3,4)

delete zawodnicy_tl

truncate table zawodnicy_tl


update zawodnicy_tl set nazwisko='kowalski', imie = 'marcin'
		where id_Zawodnika in (2,3)

truncate table zawodnict_tl

 insert into zawodnicy_tl 
	select id_trenera, imie,nazwisko,kraj,wzrost,waga,data_ur 
	 from zawodnicy where kraj = 'pol'

select * from zawodnicy_tl

delete zawodnicy_tl where kraj != 'pol'

update zawodnicy_tl  set nazwisko = z.nazwisko
 from 
	zawodnicy z
 where z.id_zawodnika = zawodnicy_tl.id_zawodnika


alter table zawodnicy_tl 
 add kolorWlosow varchar(50)

 select * from zawodnicy_tl


 -- zadanie: 
-- Dla kazdego zawodnika wypisz, kto jest jego szefem. W nowej kolumnie 
-- o nazwie id_szefa wpisz id zawodnika, który jest jego szefem. 
-- Szefem Zawodnika A jest zawodnik B z tego samego kraju, który jest 
-- od niego wyższy ale pomiędzy zawodnikiem A i B nie ma innego ze wzrostem
-- pośrednim. Zawodnik najwyższy w danym kraju jest szefem wszystkich 
-- szefów i id_szefa jego zawodnika wynosi null

select * from zawodnicy
order by kraj, wzrost


select id_zawodnika, imie, nazwisko , kraj, wzrost,
 LEAD(id_zawodnika,1) over (PARTITION BY kraj order by wzrost) id_szefa  
from zawodnicy

-- do Twojej tablki dodaj kolune id_szefa 

alter table zawodnicy_tl 
	add id_Szefa int

select * from zawodnicy_tl
truncate table zawodnicy_tl

insert into zawodnicy_tl
 select id_trenera, imie,nazwisko,kraj,wzrost,waga,data_ur,null,null 
 from zawodnicy

 select * from zawodnicy_tl
	
update zawodnicy_tl set id_szefa = 
		LEAD(id_zawodnika,1) over (PARTITION BY kraj order by wzrost) 
 from zawodnicy z
where zawodnicy_tl.id_zawodnika = z.id_zawodnika

update zawodnicy_tl set id_szefa = t.idS
	from zawodnicy z 
	 right join 
	 (
		select id_zawodnika,
		 LEAD(id_zawodnika,1) over (PARTITION BY kraj order by wzrost) idS
		from zawodnicy 
	 ) t on z.id_zawodnika = t.id_zawodnika
where z.id_zawodnika = zawodnicy_tl.id_zawodnika

select * from zawodnicy_tl


select z.id_zawodnika, z.imie, t.idS
from zawodnicy z left join 
	(select id_zawodnika,
			 LEAD(id_zawodnika,1) over (PARTITION BY kraj order by wzrost) idS
			from zawodnicy) t
			on z.id_zawodnika = t.id_zawodnika