Dzień 3 (Szkolenie programowanie .Net C# / SQL Warszawa)

-- dla kazdego kraju wypisz sumaryczną wagę zawodników

 

select * from zawodnicy


select kraj, waga
from 
	(select kraj, avg(waga) waga, 1 o
	from zawodnicy 
	group by kraj
	union
	select 'total', avg(waga) ,2 
	from zawodnicy) t 
order by o


select coalesce(kraj,'total'), avg(waga)
from zawodnicy
group by rollup(kraj)

select coalesce(kraj,'total') kraj,avg(waga) sr
from 
	(select coalesce(kraj,'brak danych') kraj, waga
	from zawodnicy) t 
group by rollup(kraj)

-- dla kazdego zawodnika wypisz porę roku, kraj i wagę
go
drop view zawPory

create view zawPory as
select kraj, 
	case
		when month(data_ur) between 3 and 5 then 'wiosna'
		when month(data_ur) between 6 and 8 then 'lato'
		when month(data_ur) between 9 and 11 then 'jesien'
		else 'zima'
	end [pora roku], waga
from zawodnicy


select kraj, [pora roku], sum(waga)
from zawPory
group by cube(kraj, [pora roku])


select *
from zawPory
pivot 
	(
		sum(waga)
		for [pora roku] in ([wiosna],[lato],[jesien],[zima])
	) p

select * from

	(select kraj, 
		case
			when month(data_ur) between 3 and 5 then 'wiosna'
			when month(data_ur) between 6 and 8 then 'lato'
			when month(data_ur) between 9 and 11 then 'jesien'
			else 'zima'
		end [pora roku], waga
	from zawodnicy) t
pivot 
	(
		sum(waga)
		for [pora roku] in ([wiosna],[lato],[jesien],[zima])
	) p

	select * from zawodnicy

select imie, nazwisko,wzrost, dense_rank() over (order by wzrost ) 
from zawodnicy

-- proszę znajdź zawodników 2 co do wielkości
select *
from 
	(select imie, nazwisko,wzrost, dense_rank() over (order by wzrost desc ) ranga
	from zawodnicy) t 
where ranga in (2,4,6)

select imie, nazwisko, wzrost, kraj,
   rank() over (partition by kraj order by wzrost desc)
from zawodnicy

select imie, nazwisko, kraj, wzrost, 
	CHOOSE(przedzial,'niski','średni','wysoki')
from 
	(select imie, nazwisko, wzrost,kraj,
		ntile(3) over (order by wzrost) przedzial
	from zawodnicy) t 

select imie, nazwisko, wzrost, kraj,
	lag(wzrost,2) over (order by wzrost)
from zawodnicy 
 
 -- dla każdego zawodnika wypisz o ile jest cięższy od poprzedniego 

 select imie, nazwisko, waga, waga-pop from
 (select imie, nazwisko, waga, lag(waga,1) over (order by waga) pop 
 from zawodnicy) t 

 select imie, nazwisko, wzrost, kraj,
	lead(wzrost,2) over (order by wzrost)
from zawodnicy 


 select imie, nazwisko, wzrost, kraj,
	sum(wzrost) over 
		(order by wzrost rows between unbounded preceding and 2 following)
from zawodnicy 




create table osoby 
(
	id int identity(1,1) primary key,
	imie varchar(255) ,
	nazwisko varchar(255),
	wzrost int,
	waga decimal,
	data_ur datetime2 
)

drop table osoby
select POWER(2,8)


select * from osoby

insert into osoby values ('jan','kowalski',178,76,'19701224')

delete osoby where imie = 'jan'

select * from osoby 

update osoby set imie = 'adam', nazwisko='nowak'
	where id=9

	select * from zawodnicy 


select imie, nazwisko
from zawodnicy
where imie like 'mar[^tb]in'

select * from zawodnicy

create table kraje 
(
	id int primary key identity(1,1),
	nazwaKraju varchar(255)
)

create table slownik
(
	id int primary key identity(1,1),
	wartosc varchar(255),
	typ int,
	typDanych varchar(255)
)

create table opisSlownika
(
	id int primary key identity(1,1),
	opis varchar(255),
)

insert into opisSlownika values('kraje')
insert into opisSlownika values('kolory')

insert into opisSlownika values('miasta')

insert into slownik values('polska',1)
insert into slownik values('niemcy',1)
insert into slownik values('niebieski',2)
insert into slownik values('warszawa',3)