Dzien 1 SQL (Szkolenie programowanie .Net C# / SQL Warszawa)

 

Baza danych:

baza danych

 

use A_Zawodnicy

select 4

select 4+2 

select 4, imie,  nazwisko 
from zawodnicy

select * from zawodnicy

-- str 7 cw 1-3

/*
  wiele
  linii
*/

select imie  [xyz], nazwisko , 4 [x], wzrost, wzrost+4 as [nowy Wzrost] 
from zawodnicy

-- operatory: + - * /   ( ) 

-- str 8 cw: 4-5   

select imie, nazwisko, wzrost*1.46 [max dł nart]
from zawodnicy

select imie, nazwisko,  waga / ((wzrost/100.0)*(wzrost/100.0)) [bmi]
from zawodnicy

select 10/3 , 10.0/3, 10/3.0


select 1.0* waga / wzrost
from zawodnicy

select 'nazywam się: ' + imie + ' ' + nazwisko
from zawodnicy

-- cw 6 str 8

select nazwisko + ', ' + imie + '(' + kraj + ')'
from zawodnicy

select ROUND(10.0/3,2)

-- Funkcje wbudowane
select imie, nazwisko,
	round( waga / ((wzrost/100.0)*(wzrost/100.0)),2) bmi
from zawodnicy
 
 -- format - zmiana formatu

 select abs(-3), power(2,3)

 select waga / POWER(wzrost/100.0,2)
 from zawodnicy

 select sign(5)

 select 10/3 , 10 % 3

 select * from zawodnicy

 -- dla każdego zawodnika wypisz jak bardzo różni się jego wzrost 
 -- od 170 cm  (np dla zawodników ze wzrostem 168 lub 172 wynik to 2)
 
 select imie, nazwisko , abs(wzrost-170)
 from zawodnicy
 
 -- funkcje formatujące 
  
  select 10.0/3 , format(10.0/3, '00.##')

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

  select imie, data_ur, format(data_ur,'yy "urodzony" dd MMMM')
  from zawodnicy

  -- str, cw 24-25

  select imie, nazwisko, FORMAT(data_ur,'dd.MM.yyyy "r."')
  from zawodnicy

  select imie, nazwisko, FORMAT(data_ur,'dddd dd.MMMM.yyyy "r."','pl-pl')
  from zawodnicy

  select imie, nazwisko, FORMAT(data_ur,'dddd dd.MMMM.yyyy "r."','zh-cn')
  from zawodnicy

  select convert(decimal, 10) / 3

  select 'ala ma kota' + convert(varchar, 4)

  select 'ala ma kota' + FORMAT(4,'0')

  
  select GETDATE()
  from zawodnicy

  select imie, 
  FORMAT(data_ur,'yyyy'),
  YEAR(data_ur) , MONTH(datA_ur), day(data_ur)
  from zawodnicy

  select convert(datetime,DATEFROMPARTS(2000,4,15)) + 2
  
  select DATEADD(d,2,datefromparts(2000,4,15))

  select GETDATE() + 2

  select DATEADD(m,2, getdate())

  select imie, DATEADD(m,2,data_ur) from zawodnicy

  select DATEDIFF(m,getdate(),data_ur) 
  from zawodnicy

  -- zadanie dla kazdego zawodnika podaj ile ma lat

  select imie, nazwisko, 
	DATEDIFF(yyyy,data_ur,getdate()),
	year(getdate()) - year(data_ur)
  from zawodnicy

  
  -- ile zostało nam dni do konca roku od dzisiaj
  
  select DATEDIFF(dd,getdate(),datefromparts(YEAR(getdate()),12,31))

  -- podaj nazwe miesiaca w ktorym urodzil się dany zawodnik 
	select imie, nazwisko, data_ur, 
		FORMAT(data_ur,'MMMM','pl-pl')
	from zawodnicy
  -- (pomocnicze) podaj datę równą pierwszemu dnia miesiąca po miesiącu 
  --urodzenia zawodnika
  
  select imie, nazwisko, data_ur , 
	DATEADD(m,1,data_ur),
    day(
		DATEADD(
				dd,
				-1,
				dateadd(m,1,
							DATEFROMPARTS(
								year(data_ur),
								month(data_ur),
								1)
						)
				)
	   )
  from zawodnicy
  
  -- ile dni ma miesiac w ktorym sie urodzil dany zawodnik
   

  -- w jaki dzien tygodnia wypada w aktualnym roku wigila 
  
	select format(DATEFROMPARTS(year(getdate()),12,24),'dddd','pl-pl')

  -- jaki dzien tygodnia bedzie za 2 miesiace i 5 dni
  
	select format(dateadd(dd,5,DATEADD(m,2,getdate())),'dddd','pl-pl')

  -- za ile dni ma urodziny dany zawodnik 
      select imie, data_ur, 
			DATEDIFF(dd,
					getdate(),
					datefromparts(year(getdate()),month(data_ur),day(data_ur)))
	   from zawodnicy
  
  -- podaj wiek dokladnie z dokładnością co do dnia czyli
  -- uwzględniając to czy zawodnik miał czy jeszcze nie miał urodzin

  select imie, data_ur, DATEDIFF(yy,data_ur,getdate())-
	(sign(DATEDIFF(dd,
					getdate(),
					datefromparts(
									year(getdate()),
									month(data_ur),
									day(data_ur)
								  )
					)
		  )+1
	  )/2
  from zawodnicy


  -- funkcje tekstowe

  select  len('ala ma kota'), UPPER('a'), LOWER('B'), 
		 CHARINDEX('ma','ala ma kota'), 
		 SUBSTRING('ala ma kota', 5,2),
		 Rtrim(LTRIM('    ala ma kota')),
		 left('ala ma kota',3)

-- str15 cw 29-31 
    
	 select imie + ' '+  left(nazwisko,1) + LOWER(SUBSTRING(nazwisko,2,len(nazwisko)-1))
	 from zawodnicy

	 select imie + ' ' + LEFT(nazwisko,1) + '.'
	 from zawodnicy

	 select imie + ' ' + nazwisko + ' waży ' + FORMAT(waga,'00')     + ' kg.',
		    imie + ' ' + nazwisko + ' waży ' + convert(varchar,waga) + ' kg.'
	 from zawodnicy

	-- dodatkowe:
	--1) dla kazdego zawodnika wypisz środkową literę jego imienia i nazwiska
		select imie, SUBSTRING(imie,len(imie)/2,1),
		 nazwisko, SUBSTRING(nazwisko,len(nazwisko)/2,1)		  	
		from zawodnicy

	--2) Dla kazdego zawodnika wypisz 3 pierwsze litery miesiąca w którym się urodził 
	    select imie, data_ur, 
				LEFT(FORMAT(data_ur,'MMMM','pl-pl'),3)
		from zawodnicy
	--3) Jeśli zawodnik urodził się w miesiącu w którym jest litera 'r' to dodaj do jego wagi 1 kg . 
	     select imie, FORMAT(data_ur,'MMMM','pl-pl'),waga [waga przed],
			sign(CHARINDEX('r',FORMAT(data_ur,'MMMM','pl-pl'))) + waga [waga po]
		 from zawodnicy

	--4) wiedząc, że jest funkcja Replace np: select REPLACE('ala','a','o'), która zamienia jeden 
	-- ciąg na drugi podmień w imionach wszystkie litery a na o natomiast litery o na a 
	-- np: ala stanie się olo a olo stanie się ala
		select imie, 
			REPLACE(REPLACE(REPLACE(imie,'a','!'),'o','a'),'!','o')
	    from zawodnicy

	--5) wiedząc, że jest funkcja select REVERSE('xyz'), która odwraca nam ciag 
	-- podaj podciąg z imienia od pierwszej litery 'e' do ostatniej litery 'e'
	-- jezeli imie nie ma wcale litery 'e' - wypisz cale imie
		
		select imie, 
			CHARINDEX('e',imie),
			len(imie)- charindex('e',REVERSE(imie))+1,
			SUBSTRING(imie,CHARINDEX('e',imie),len(imie)- charindex('e',REVERSE(imie))+1-CHARINDEX('e',imie)+1)
		from zawodnicy


		-- iif 
		
		select IIF(1=2,'tak','nie') 

		-- dla kazdego zawodnika wypisz czy jego wzrost jest wysoki czy niski 
		-- w zaleznosci od tego czy jest wyzszy niz 170 cm 

		select imie, wzrost, IIF(wzrost > 170,'wysoki','niski')
		from zawodnicy

		-- wypisz czy wzrost zwodnika jest wysoki/sredni/niski
		-- wiedząc , że średni to od 165 do 170 włącznie
		 
		 select imie, wzrost, IIF(wzrost >170,'wysoki',iif(wzrost<165,'niski','sredni'))
		from zawodnicy


        select imie, wzrost ,
			case
				when wzrost > 170 then 'wysoki'
				when wzrost < 165 then 'niski'
				else 'sredni'
			end	 
		from zawodnicy

		select * from trenerzy

		select imie_t, data_ur_t,  IIF(data_ur_t is null,'pusta','zapelniona')
		from trenerzy

		-- str 17 , cw 32- 36 

		select imie,nazwisko, waga/POWER(wzrost/100.0,2),
			IIF(waga/POWER(wzrost/100.0,2)>20,'ok','zle')
		from zawodnicy

		select imie,nazwisko, waga/POWER(wzrost/100.0,2),
			case
				when waga/POWER(wzrost/100.0,2)  > 20 then 'ok'
				else 'zle'
			end
		from zawodnicy

		select imie_t, data_ur_t, 
			IIF(data_ur_t is null , 'bd',format(data_ur_t,'dd.MM.yyyy'))
		from trenerzy
		--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 imie, nazwisko, data_ur,
		 iif(
			getdate() < datefromparts(year(getdate()),month(data_ur),day(data_ur)),
			'jeszcze nie','juz mial')
		from zawodnicy

		-- dodatkowe:
		--1) dla kazdego zawodnika wypisz jego albo imie albo nazwisko, w zależności co jest dłuższe
				select IIF(len(imie)>len(nazwisko),imie,nazwisko)
				from zawodnicy
		--2) dla kazdego zawodnika wypisz czy urodził się w dniu parzystym czy nieparzystym
			  select imie, data_ur, iif(DAY(data_ur) % 2 =0 , 'parzyste','np')
			  from zawodnicy
		--3) dla kazdego zawodnika wypisz porę roku w jakiej się urodził 
			  SELECT imie, nazwisko,
				CASE
					when MONTH(data_ur) >= 3 and MONTH(data_ur) <= 5 then 'wiosna'
					when MONTH(data_ur) in (6,7,8)  then 'lato'
					when MONTH(data_ur) in (9,10,11) then 'jesien'
					else 'zima'
				END
			  FROM zawodnicy