Ukoly na procvicení jazyka T-SQL Lehké Úkol 1 Zadání A Vytvořte seznam všech zákazníků, seřazený vzestupně podle jména a druhotně podle příjmení. Vraťte všechny sloupce tabulky. Zadání B Vytvořte seznam všech zákazníků, seřazený vzestupně podle jména a druhotně podle příjmení. Vraťte jen sloupce Title, FirstName, LastName, Suffix a ContactID. Zadání C Vytvořte seznam všech zákazníků kteří mají titul před jménem i za jménem, seřazený sestupně podle jména a druhotně podle příjmení. Vraťte jen sloupce Title, FirstName, LastName, Suffix a ContactID. Zadání D Vytvořte seznam všech zákazníků jejichž titul před jménem začíná na písmeno „M“, seřazený sestupně podle jména a druhotně vzestupně podle příjmení. Vraťte jen sloupce Title, FirstName, LastName, Suffix a ContactID. Zadání E Vytvořte seznam zákazníků, který bude obsahovat všechny zákazníky, ale vraťte jen sloupce ContactID a PersonName, kde sloupec PersonName bude dopočítaný do následující podoby: “ Ing. Petr Novák, PhD.“  {Title} {FirstName} {LastName}, {Suffix} Využijte funkce COALESCE pro ošetření nullových hodnot. Definice tabulek Person.Contact Úkol 2 Zadání A Vytvořte seznam produktů které bylo možno koupit od 1. 1. 2000 do 1. 1. 2001. Zadání B Vytvořte parametrizovanou uloženou proceduru Production.uspGetAvailableProducts, která umožní vracet seznam prodávaných produktů v daných mezích dat. Zadání C Vytvořte pohled Production.vAvailableProducts který bude vracet produkty, které se v současné chvíli prodávají. Využijte GETDATE pro získání aktuálního data a času. Zadání D Určete pro každý produkt celkovou délku jak dlouho je na trhu, počítáno ve dnech. Využijte funkce DATEDIFF. Nezapomeňte ošetřit situaci, kdy produkt je na trhu až do současnosti např. využitím CASE. Definice tabulek Production.Product Středně těžké Úkol 3 Zadání A Určete, která 3 jména jsou mezi zákazníky nejčastěji používána. Vypište také počet jejich užití. Zadání B Určete, která 3 mužská jména jsou mezi zákazníky nejčetnější. Vypište také počet jejich užití. Zadání C Vytvořte uloženou proceduru Person.uspGetFirstNameUsage , která bude po zadání jména vracet počet jeho výskytů a relitivní počet jeho výstytů vzhledem k celkovému počtu jmen (v %, zaokrouhleno na 4 desetinná místa). Zadání D Určete počet různých jmen, která byla u zákazníků použita. Definice tabulek Person.Contact Úkol 4 Zadání A Určete, kterých 10 zákazníků naposledy nakupovalo. Využijte propojení tabulek Sales.SalesOrderHeader, Sales.Individual a Person.Contact. Vypište jen základní údaje o zákazníkovi. Zadání B Vytvořte pohled Sales.vBestCustomers, který bude zobrazovat 10 nejvíce nakupujících zákazníků (uvažujme podle ceny objednávky). Zadání C Vytvořte pohled Sales.vMostActiveCustomers, který bude zobrazovat 10 nejvíce nakupujících zákazníků (uvažujme podle počtu objednávek). Definice tabulek Sales.SalesOrderHeader, Sales.Individual a Person.Contact Těžké Úkol 5 Zadání A Tabulka Purchasing.PurchaseOrderHeader obsahuje informace o nákupech zboží, které je potom přeprodáváno. Spočítejte průměrnou nákupní cenu za kus pro jednotlivé produkty, které byly nakoupeny. Využijte dat z tabulky Purchasing.PurchaseOrderDetail. Zadání B Pomocí tabulky Production.Product určete, které produkty jsou vlastní výroby (neexistuje pro ně záznam v Purchasing.PurchaseOrderDetail). Využijte v podmínce EXISTS. Zadání C Pomocí tabulky Production.Product určete, které produkty nejsou vlastní výroby (existuje pro ně záznam v Purchasing.PurchaseOrderDetail). Využijte v podmínce EXISTS. Zadání D Pro každý nakoupený produkt spočítejte průměrnou nákupní cenu (Purchasing.PurchaseOrderDetail). Zadání E Vytvořte pohled Purchasing.vPurchasedProducts, který bude obsahovat sloupce ProductID a vypočítaný sloupec UnitPrice, který bude obsahovat průměrnou nákupní cenu. Zadání F Určete pro každou objednávku ze Sales.SalesOrderHeader, kolik se prodělalo nebo vydělalo na přeprodání nakoupených dílů. Zadání G Upravte pohled Purchasing.vPurchasedProducts tak, aby byl rozšířen o jeden sloupec, kde budou pomocí Sales.SalesOrderDetail vypočítány zisky nebo ztráty na prodeji daného produktu. Zadání H Vytvořte uloženou proceduru, která má parametr ProductID a vrací informace o ziscích či ztrátách na prodeji nakupovaného produktu. Definice tabulek Purchasing.PurchaseOrderDetail, Sales.SalesOrderHeader, Sales.SalesOrderDetail, Production.Product Úkol 6 Zadání A Určete kolik objednávek vystavili jednotliví obchodníci v Sales.SalesPerson Zadání B Určete celkovou cenu zboží co prodali jednotliví obchodníci, pro zjednodušení počítejte se sloupcem TotalDue v rámci Sales.SalesOrderHeader. Zadání C Určete nejlepšího prodejce pro každou oblast, ve výsledku vypište ID prodejce, název oblasti a celkovou sumu prodejů. Zadání D Každý obchodník má stanovený limit, kolik zboží musí prodat za rok, aby dostal k výplatě bonusy. Protože se tento limit mění s časem, tak je uchováván v závislosti na roce v tabulce Sales.PersonQuotaHistory. Vytvořte uloženou proceduru Sales.uspRewardedSalesPersons, která po vložení roku (jako číslo) vypíše obchodníky, kteří v daném roce získali svůj bonus. Definice tabulek Sales.SalesPerson, Sales.SalesPersonQuotaHistory, Sales.SalesOrderHeader, Sales.Territory