-- Vypište jméno a příjmení a plat zákazníků seřazených abecedně podle příjmení
select jmeno, prijmeni
from Zakaznik
order by prijmeni
-- Vypište název a číslo školení setříděný podle názvu školení sestupně.
select ID_Skoleni,Nazev
from Skoleni
order by Nazev desc;
-- Jak se jmenují a kdy nastoupili pracovníci z oddělení 5.
select Jmeno,prijmeni,datum_nastupu
from Zamestnanci
where ID_Oddeleni=5;
-- Jaké má osobní číslo zaměstnance Dana Nová ?
select Jmeno,Prijmeni,ID_Zamestnance
from Zamestnanci
where Prijmeni='Nová' and Jmeno='Dana';
-- Kdy nastoupil zaměstnanec číslo 5 ?
select ID_Zamestnance, datum_nastupu
from Zamestnanci
where ID_Zamestnance =5;
-- jak se jmenují (jméno a příjmení) zaměstnanci z oddělení 2 ?
select Jmeno ,Prijmeni
from Zamestnanci
where ID_Oddeleni =2;
-- Ze kterých měst jsou naši zákazníci ?
select distinct mesto
from Zakaznik ;
-- Zobrazte jména zaměstnanců a zbavte se duplicit. Seřaďte podle abecedy.
select distinct Jmeno as Jména
from Zamestnanci
order by Jména ;
-- Vypište pouze názvy výrobků seřazené podle ceny sestupně.
select Nazev,Cena
from Produkty
order by Cena;
-- Seřaďte zaměstnance nejprve podle pohlaví a pak podle příjmení.
select Prijmeni, Pohlavi
from Zamestnanci
order by 1,2
-- Vypište jméno a příjmení zákazníků seřazených abecedně podle příjmení, pak podle jména.
select jmeno ,prijmeni
from Zakaznik
order by 2,1
-- Vyberte pouze ženy z Prahy
select Jmeno,Prijmeni
from Zamestnanci
where Pohlavi='ž' and Mesto='Praha';
-- Vyberte zaměstnance z Prahy a z Brna.
select Jmeno,Prijmeni ,MEsto
from Zamestnanci
where Mesto='Praha' or Mesto='Brno';
-- Vyberte zaměstnance. Všechny muže z Brna a všechny ženy z Prahy.
select Jmeno, prijmeni, mesto
from Zamestnanci
where (Pohlavi ='m' and Mesto ='Brno') or (Pohlavi='ž' and Mesto ='Praha');
-- Zobrazte zaměstnance, kteří nemají titul.
select Jmeno, prijmeni,titul
from Zamestnanci
where Titul is null;
-- Zobrazte muže, kteří uvedli, že se zajímají o tenis.
select*
from Zamestnanci
where Zajmy like ('%tenis%');
-- Vyberte příjmení končící na á
select prijmeni
from Zamestnanci
where Prijmeni like('%á');
-- Vyberte příjmení, které obsahuje ocho
select prijmeni
from Zamestnanci
where Prijmeni like('%ocho%');
-- Jak zobrazím jen ty zaměstnance, kteří mají příjmení právě z znaků ?
select *
from Zamestnanci
where LEN(prijmeni)=6;
-- Vyberte příjmení zaměstnanců od písmene N.
select prijmeni
from Zamestnanci
where lower(Prijmeni) like ('N%');
-- Jaký mají název a kolika hodinová jsou školení s č. 3 a 4?
select Nazev , Pocet_hodin
from Skoleni
where ID_Skoleni =3 or ID_Skoleni =4;
-- Zobrazte jméno, příjmení a plat zaměstnanců, jejichž plat je 15000 až 20000
--(včetně těchto hodnot). Výsledek seřaďte podle platu sestupně ( tedy 1000 >1)
select Jmeno, Prijmeni, plat
from Zamestnanci
where Plat >=15000 and plat<=20000;
-- Která školení trvají více jak 5 hodin a méně než 10? (Včetně těchto hodnot)
select Nazev, Pocet_hodin
from Skoleni
where Pocet_hodin >=5 or Pocet_hodin <=10;
-- Zobrazte výrobky, které stojí mezi 100 a 150 Kč ?
Select Nazev ,cena
from Produkty
where Cena >100 and Cena <150;
-- Jaké je číslo zaměstnance, který byl na školení č.5 a 6 a 7?
select ID_Zamestnance
from ZamestnanciSkoleni
where ID_Skoleni=5 and ID_Skoleni=6 and ID_Skoleni=7
-- Jaké je jméno zaměstnance, který byl na školení č.5 a 6 a 7?
-- Zobrazte jméno a příjmení těch zaměstnanců, jejichž jméno je Helena, nebo Hana nebo Zuzana.
select Jmeno, Prijmeni
from Zamestnanci
where Jmeno ='Helena' or Jmeno='Hana' or Jmeno='Zuzana';
-- Zobrazte pracovníky, jejichž příjmení začíná na písmena A,B nebo C.
-- Vyberte zaměstnance, kteří nejsou z Prahy ani z Brna.
-- Zobrazte prvních 6 zaměstnanců seřazených podle výše platu.
-- Zobrazte prvních 7 výrobků seřazených podle ceny.
-- Náhodně vyberte jednoho zaměstnance.
select top 1*
from Zamestnanci
order by NEWID ();
-- Náhodně vyberte tři produkty.
select top 3*
from Produkty
order by NEWID ();
-- Náhodně vyberte tři zákazníky.
select top 3*
from Zakaznik
order by NEWID ();
-- V tabulce lidé rozdělte podle celejmeno na jméno a příjmení do samostatných polí.
select substring(celejmeno,0,CHARINDEX(' ',celejmeno)) as jmeno,
substring(celejmeno,CHARINDEX(' ',celejmeno),len(celejmeno)) as prijmeni
from lide;
-- V tabulce lidé z pole popis vytvořte pěkný popis, který začíná velkým písmenem a zbytek jsou malá písmena.
select UPPER (substring(popis,1,1)) + ' ' + LOWER(substring(popis,2,len(popis)) )
from lide;
-- Zobrazte dohromady v jednom sloupci jméno, příjmení a plat podle vzoru <jméno> <příjmení>, <plat> Kč.
-- Hodnoty platu budou obsahovat Kč.
select '< ' + Jmeno + ' >' + '< '+ prijmeni+' >' + '< '+STR(plat)+' >'+ ' Kč'
from Zamestnanci
-- Zobrazte zaměstnance podle vzoru : "P. NOVÁK - Praha, 18100" (Příjmení je velkým písmem).
select substring(Jmeno,1,1)+ '. ' + Prijmeni + ' - ' + Mesto + ', ' + PSC
from Zamestnanci
-- seřaďte zákazníky podle délky příjmení.
select *
from Zakaznik
order by LEN (prijmeni) ;
-- Vytvořte ceník, kde bude uveden název produktu a cena spolu s měnovou jednotkou,
-- tj. např. Bronzo, 55,0 Kč ( Vypište sloupec název produktu, jednotková cena, 'text' Kč).
-- Zobrazte jméno, příjmení .a rodné číslo zákazníků ve tvaru XXXXXX/XXXX.
select jmeno, prijmeni, SUBSTRING(rodneCislo,1,6) + ' / ' + SUBSTRING(rodneCislo,7,4)
from Zakaznik
-- Zobrazte jméno, příjmení .a PSČ zákazníků ve tvaru XXX XX ( tři čísla, mezera dvě čísla).
select jmeno ,prijmeni , SUBSTRING (psc,1,3) + ' '+ SUBSTRING (psc,4,2)
from Zakaznik
-- Zobrazte jméno, příjmení a telefon zákazníků ve tvaru +420 XXX XXX XXX.
select jmeno , prijmeni, '+420 ' + SUBSTRING(telefon,1,3) + ' '+ SUBSTRING(telefon,4,3) + ' ' + SUBSTRING(telefon,7,3) as 'telefon'
from Zakaznik
-- Jaký by byl plat zaměstnance v Eurech. Zobrazte dva sloupce. Jméno a příjmení jeden sloupec,
-- plat v eurech druhý sloupec. Za plat uveď jednotku €.
select Jmeno + ' ' +Prijmeni as 'JMENO a PŘIJMENÍ',STR(plat/25.25) + ' €'
from Zamestnanci
-- Vytvořte dotaz, který vypočítá hodnotu (sin(1))^2+(cos(1))^2
select( POWER(sin(1),2)+POWER(cos(1),2))
-- Zobrazte jméno, příjmení a nově sloupec 'Příspěvek na vánoce'.
--Pracovník dostane příspěvek na Vánoce 500 Kč na každé své dítě.
select Jmeno,Prijmeni, Pocet_deti *500 as 'příspěvěk'
from Zamestnanci
-- O kolik by jednotliví zaměstnanci brali více peněz,
-- kdyby se jejich plat navýšil o 3%? (Zobrazte jméno, příjmení, plat před zvýšením a plat po zvýšení).
select Jmeno, Prijmeni,Plat,Round(Plat *1.03,0) as 'Plat po navýšení'
from Zamestnanci
-- O kolik by se zvýšila cena produktů, v případě dvouprocentního zdražení?
-- (Zobrazte název, cenu před zvýšením a cenu po zvýšení).
select Nazev ,Cena ,Cena *1.02 as po 2 % zdrazeni
from Produkty
-- Zobrazte <jméno>, <příjmení> a <plat> a plat navýšený o bonus ve výši 25% platu.
-- (Navýšený plat Zaokrouhlete na tisíce).
select Jmeno, Prijmeni ,Plat ,str(Round(Plat *1.25,-3)) as novy
from Zamestnanci
-- Kteří zaměstnanci, po zvýšení platu o 20% měli více než 21000 (včetně)?
---Zobrazte zaměstnance, starý plat a nový plat, který zaokrouhlíte na tisíce.
select Jmeno , Prijmeni ,Plat ,STR(Round(Plat * 1.2,-3))as 'NOVY'
from Zamestnanci
-- Zobrazte jméno, příjmení a plat v Korunách a Eurech a za částku přidejte znak pro Euro a Koruny.
-- Vytvořte dotaz, který vypočítá hodnotu 10/7.
select ROUND(10.256,1)
-- zaokrouhlete číslo 1258,828 směrem dolů (ořežte desetiny).
select ROUND(1258.828,-0)
-- Zjistěte, jaký je celočíselný zbytek po dělení čísla 21 číslem 7.
select 21%7
-- Zobrazte dnešní datum, jeho den, měsíc a rok. (Slovy a číslem)
select Datepart(DAY,GEtdate()),
Datepart(mm,GEtdate()),
Datepart(yy,GEtdate()),
Datename(DAY,GEtdate()),
Datename(mm,GEtdate()),
Datepart(yy,GEtdate());
-- Zobrazte jen objednávky od 15. července 2009 do 20. července 2009
select *
from Objednavky
where datum_prijeti >='15.6.2009' and datum_prijeti <='20.8.2009'
select *
from Objednavky
-- Zobrazte kolik je vám let.
select DATEDIFF (yy,'1989-12-06',getdate());
set dateformat yy-mm-dd
-- Za každý celý odpracovaný měsíc dostane pracovník bonus 50Kč. Zobrazte jméno, příjmení.
select jmeno,Prijmeni,CAST (DATEDIFF (mm,datum_nastupu,getdate())*50 as varchar)as novy
from Zamestnanci
-- Zobrazte objednávky přijaté mezi daty 5.7.2010 a 6.7.2010. a bonus.
set dateformat dmy
select *
from Objednavky
where datum_prijeti between '5.7.2010' and '6.7.2010';
-- Za každý celý odpracovaný rok zaměstnanec dostane 500Kč. (Přesně, necelý rok se nezapočítává)
select Jmeno,Prijmeni,cast(datediff(yy,datum_nastupu,getdate()) as varchar)
from Zamestnanci ;
-- Zobrazte věk zaměstnanců, seřaďte pracovníky podle pohlaví a dále podle věku.
select Jmeno, Prijmeni, FLOOR(datediff(dd,Datum_narozeni, GETDATE())/365.3)
from Zamestnanci
order by Pohlavi,FLOOR(datediff(dd,Datum_narozeni, GETDATE())/365.3)
-- Zobrazte zaměstnance, kteří e narodili v roce 1969 nebo 1959.
select Jmeno,Prijmeni
from Zamestnanci
where Year(Datum_narozeni) in ('1969','1957');
-- Vypište seznam objednávek ( číslo a datum přijetí ve formátu DD.MM.RRRR)
select ID_objednavky, CONVERT(varchar,datum_prijeti, 101)
from Objednavky ;
-- Kolik dnů trvalo vyřídit jednotlivé objednávky. (číslo objednávky a prodlevu).
select ID_objednavky , CAST(datediff(dd,datum_prijeti,datum_odeslani)as varchar)
from Objednavky
-- Které objednávky se nepodařilo vyřídit následující den (číslo objednávky a pracovník)?
select ID_objednavky
from Objednavky
where CAST(datediff(dd,datum_prijeti,datum_odeslani)as varchar)>1
-- Které objednávky odeslal zaměstnanec s číslem 12? ( číslo objednávky, datum expedice).
select ID_objednavky
from objednavky
where ID_zamestnance =12
-- Které objednávky si objednal zákazník s čísle 1020? ( číslo objednávky, datum expedice).
select ID_objednavky
from Objednavky
where ID_zakaznika=1020;
-- Zobrazte všechny zaměstnance starší než 30 let.
select Jmeno,Prijmeni,FLOOR(DATEDIFF(dd,datum_narozeni,getdate())/365.3)as vek
from Zamestnanci
where
FLOOR(DATEDIFF(dd,datum_narozeni,getdate())/365.3)>30
-- Vyberte muže z Ostravy starší než 30 let a ženy (nezáleží na městě) mladší než 50.
select*
from Zamestnanci
where (FLOOR(DATEDIFF(dd,datum_narozeni,getdate())/365.3)> 30 and Pohlavi ='m' and Mesto='Ostrava')or
(FLOOR(DATEDIFF(dd,datum_narozeni,getdate())/365.3)< 50 and Pohlavi ='ž' )
-- Zobrazte seznam objednávek (číslo objednávky, číslo zákazníka, datum přijetí) seřazený podle data objednávky (nejnovější k staršímu).
select ID_objednavky ,ID_zakaznika ,datum_prijeti
from Objednavky
order by datum_prijeti
-- Vyberte zaměstnance narozené po do 1.1.1980 a před od 31.12.1970.
select Datum_narozeni
from Zamestnanci
where CONVERT(varchar,datum_narozeni,104)>'1.1.1970'
-- Zobrazte jméno a příjmení zákazníka a délku jeho jména a příjmení.
select jmeno,prijmeni,LEN(jmeno),LEN (prijmeni)
from Zakaznik
-- Zobrazte jméno, příjmení a věk zaměstnanců, seřaďte zaměstnance podle věku sestupně.
select Jmeno,Prijmeni ,FLOOR(datediff(dd,datum_narozeni,Getdate())/365.3)as vek
from Zamestnanci
order by FLOOR(datediff(dd,datum_narozeni,Getdate())/365.3) desc
-- Zobrazte všechna ID zákazníků, kteří si něco objednali v listopadu.
select ID_zakaznika
from Objednavky
where MONTH (datum_prijeti)=11;
-- Kolik máme v evidenci zaměstnanců s titulem a bez titulu? (pomocí UNION)
select Count(*),'s'
from Zamestnanci
where Titul is not null
union
select Count(*),'bez'
from Zamestnanci
where Titul is null
-- Pro muže a pro ženy uveďte, jaký mají průměrný plat a kolik máme v evidenci mužů a kolik žen. Zobrazte pod sebou. (pomocí UNION).
select AVG(plat),COUNT(*),'muži'
from Zamestnanci
where Pohlavi='m'
union
select AVG(plat),COUNT(*),'ženy'
from Zamestnanci
where Pohlavi='ž'
-- Zobrazte hodnocení délky praxe. Pokud zaměstnanec odpracoval více než 60 měsíců, zobrazte "Dlouhodobý zaměstnance" ,
--v opačném případě, zobrazte, že "Sotva nastoupil"
select Jmeno,Prijmeni ,
case
when datediff(mm,datum_nastupu,getdate())>60 then 'neco'
else 'debil'
end as 'popis'
from Zamestnanci ;
--Zobrazte pohlaví jednotlivých zákazníků (podle rodného čísla). Pracovníky vypište seřazené podle pohlaví.
select jmeno, prijmeni,
case
when substring(rodnecislo,3,2)>50 then 'žena'
when substring(rodnecislo,3,2)<50 then 'muž'
end
from Zakaznik;
-- Ověřte platnost rodných čísel zákazníků: vypište všechny, kteří uvedli neplatné rodné číslo.
select jmeno, prijmeni, 'neplatne'
from Zakaznik
Where cast(rodnecislo as bigint)%11<>0
-- Zobrazte hodnocení doby vyřazení objednávky. Prodleva 0 dní Vyřízeno hned, prodleva 1-3 Vyřízeno normálně, jinak objednávka se zpozdila.
select *,
case
when DATEDIFF(dd,datum_prijeti,datum_odeslani) = 0 then 'Vyøízeno ihned'
when DATEDIFF(dd,datum_prijeti,datum_odeslani) between 1 and 3 then 'Vyøízeno normálnì'
else 'Objednávka se zpozdila'
end
from Objednavky;
-- Zobrazte hodnocení mzdy pracovníka. Plat rovný nebo nad 25000, pak bere hodně. Plat menší než 25000, pak bere málo.
select Jmeno, Prijmeni, Plat,
case
when Plat >= 25000 then 'bere hodnì'
else 'bere málo'
end
from Zamestnanci;
-- Pro každého zaměstnance vytvořte oslovení v závislosti na jeho pohlaví. Pokud je to žena,
-- bude vypsáno: Paní......má plat........ Pokud je to muž, bude vypsáno: Pan .... má plat....
select
case
when Pohlavi='ž' then 'Paní '+jmeno+' '+Prijmeni+' má plat'+cast(Plat as varchar)
when Pohlavi='m' then 'Pan '+jmeno+' '+Prijmeni+' má plat'+cast(Plat as varchar)
end
from Zamestnanci;
-- Slovně vyhodnoťte, kdo uvedl správné rodné číslo a kdo špatné rodné číslo.
select jmeno, prijmeni, 'špatně uvedl'
from Zakaznik
Where cast(rodnecislo as bigint)%11<>0
UNion
select jmeno, prijmeni, 'dobře uvedl'
from Zakaznik
Where cast(rodnecislo as bigint)%11=0;
-- Zobrazte pod sebe seznam ( jméno a příjmení) zákazníků a zaměstnanců. Zobrazte pouze v jednom sloupci. Seřaďte podle příjmení.
select jmeno,prijmeni
from Zamestnanci
union
select jmeno,prijmeni
from Zakaznik
order by Prijmeni;
-- Pro každého zákazníka vyhodnoťte platnost jeho rodného čísla. Zobrazte zákazníka a text "RČ je platné", "RČ není platné".