In [2]:
--Tellimuste arv aastate lõikes
DECLARE @cols AS NVARCHAR(MAX)
DECLARE @query AS NVARCHAR(MAX)

SET @cols =  STUFF(
(SELECT DISTINCT ',' + QUOTENAME(CAST(YEAR(OrderDate) AS VARCHAR(4))) 
	FROM [dbo].[Orders] FOR XML PATH ('')) ,1,1,'')
SET @query = 'SELECT ''Orders'','+ @cols + '
FROM (
SELECT [OrderID], YEAR([OrderDate]) as Aasta
FROM Orders) as Andmed
PIVOT (Count(OrderID) For Aasta in('+@cols+')
) as Tabel'
EXECUTE (@query)
(1 row affected)
Total execution time: 00:00:00.014
Out[2]:
(No column name)199619971998
Orders152408270
In [12]:
--Tellitud kaupade arvud aastate lõikes
 
SELECT Productname, [1996],[1997],[1998] --päis
FROM (
    SELECT ProductName, Quantity , year(OrderDate) as Aasta --andmed
        FROM Products P Left JOIN [Order Details] O 
         ON P.ProductID=O.ProductID LEFT JOIN Orders Ord ON O.OrderID=Ord.OrderID) as Andmed
PIVOT (SUM(Quantity) FOR Aasta IN ([1996],[1997],[1998])
)AS Tabel
(79 rows affected)
Total execution time: 00:00:00.038
Out[12]:
Productname199619971998
Manjimup Dried Apples163501222
NuNuCa Nu?-Nougat-Creme7115295
Uus toodeNULLNULLNULL
Gula Malacca13839667
Konbu90142659
Rossle Sauerkraut135344161
Gumbar Gummibarchen160382211
Sir Rodney's Scones55610351
Ravioli Angelo133124177
Teatime Chocolate Biscuits124377222
Pate chinois228419256
Gnocchi di nonna Alice96971196
Cote de Blaye140223260
Longlife Tofu14111640
Mishi Kobe NikuNULL923
ChocoladeNULL1308
Queso Manchego La Pastora1223696
Chef Anton's Gumbo Mix12919150
Pavlova252571335
Perth Pasties211352159
Sir Rodney's Marmalade10696111
Tourtiere154494107
Chef Anton's Cajun Seasoning10726482
Filo Mix48313139
Boston Crab Meat204596303
r4NULLNULLNULL
Guarana Fantastica158421546
Valkoinen suklaa3015055
Sasquatch Ale90171245
Tarte au sucre250482351
Steeleye Stout274346263
Rhonbrau Klosterbier120630405
Scottish Longbreads133385281
Carnarvon Tigers106282151
Gravad lax292868
Mascarpone Fabioli5298147
Ipoh Coffee136258186
Inlagd Sill193378234
Rod Kaviar2525612
Northwoods Cranberry Sauce140114118
Gustaf's Knackebrod6209133
Uncle Bob's Organic Dried Pears25324414
Grandma's Boysenberry Spread36100165
Queso Cabrales110374222
Camembert Pierrot370665542
Maxilaku120183217
Louisiana Fiery Hot Pepper Sauce155490100
Aniseed Syrup30190108
Spegesild118269161
Schoggi Schokolade4026065
Chartreuse verte266283244
Sirop d'erableNULL396207
Lakkalikoori146447388
Mozzarella di Giovanni260353193
Ikura85346311
Louisiana Hot Spiced Okra302081
Chai125304399
Thuringer Rostbratwurst123305318
Vegie-spread109189147
Flotemysost261454342
Gorgonzola Telino444656297
Nord-Ost Matjeshering152264196
Wimmers gute Semmelknodel124281335
Tunnbrod105287188
Jack's New England Clam Chowder114549318
Singaporean Hokkien Fried Mee37451209
Gudbrandsdalsost149430135
Chang226435396
Rogede sild15392101
Alice Mutton234527217
Raclette Courdavault231752513
Tofu8529821
Laughing Lumberjack Lager565114
Original Frankfurter grune So?e63432296
Genen Shouyu2597NULL
Geitost197356202
Zaanse koeken16359110
Outback Lager156413248
Escargots de Bourgogne155177202
In [39]:
--kümme mitte populaarsemat kaupa
WITH Tabel AS ( 
SELECT  ROW_NUMBER() OVER (ORDER BY year(OrderDate), SUM(Quantity)) as RowNr,
        RANK() OVER (ORDER BY year(OrderDate), SUM(Quantity)) as Rank,
        DENSE_RANK() OVER (ORDER BY year(OrderDate), SUM(Quantity)) as DenseRank,
    ProductName,   year(OrderDate) AS Years, SUM(Quantity) as ProductsCount --andmed
        FROM Products P INNER  JOIN [Order Details] O 
         ON P.ProductID=O.ProductID INNER JOIN Orders Ord ON O.OrderID=Ord.OrderID
GROUP BY ProductName, year(OrderDate))
SELECT *
FROM Tabel
WHERE DenseRank <= 10
(14 rows affected)
Total execution time: 00:00:00.032
Out[39]:
RowNrRankDenseRankProductNameYearsProductsCount
111Laughing Lumberjack Lager19965
222Gustaf's Knackebrod19966
333Queso Manchego La Pastora199612
444Rogede sild199615
555Zaanse koeken199616
666Rod Kaviar199625
766Genen Shouyu199625
866Uncle Bob's Organic Dried Pears199625
997Gravad lax199629
10108Louisiana Hot Spiced Okra199630
11108Valkoinen suklaa199630
12108Aniseed Syrup199630
13139Grandma's Boysenberry Spread199636
141410Singaporean Hokkien Fried Mee199637
In [43]:
--Märgistada kauba populaarsuse järgi
WITH Tabel AS ( 
SELECT  ROW_NUMBER() OVER (ORDER BY year(OrderDate), SUM(Quantity)) as RowNr,
        RANK() OVER (ORDER BY year(OrderDate), SUM(Quantity)) as Rank,
        DENSE_RANK() OVER (ORDER BY year(OrderDate), SUM(Quantity)) as DenseRank,
        NTILE(3) OVER (ORDER BY year(OrderDate), SUM(Quantity)) as NTile,
    ProductName,   year(OrderDate) AS Years, SUM(Quantity) as ProductsCount --andmed
        FROM Products P INNER  JOIN [Order Details] O 
         ON P.ProductID=O.ProductID INNER JOIN Orders Ord ON O.OrderID=Ord.OrderID
GROUP BY ProductName, year(OrderDate))
SELECT TOP 10 *, 
    CASE NTile -- märgistame iga jagatud kaupade rühma populaarsuse järgi
        WHEN 1 THEN '-'
        WHEN 2 THEN ''
        WHEN 3 THEN '*'
    END AS Populaarsust
FROM Tabel
ORDER BY ProductName, Years
(10 rows affected)
Total execution time: 00:00:00.030
Out[43]:
RowNrRankDenseRankNTileProductNameYearsProductsCountPopulaarsust
6666541Alice Mutton1996234-
1421421272Alice Mutton1997527
1961951763Alice Mutton1998217*
121081Aniseed Syrup199630-
9494822Aniseed Syrup1997190
1681681533Aniseed Syrup1998108*
6161491Boston Crab Meat1996204-
1451451302Boston Crab Meat1997596
2102101883Boston Crab Meat1998303*
7373611Camembert Pierrot1996370-

Märgistada kõige odavad kaubad (Products-UnitPrice järgi)

In [44]:
SELECT TOP 10 ProductName,CategoryID, UnitPrice,
    NTILE(5) OVER (ORDER BY UnitPrice) AS HinnaTase,
    CASE   NTILE(5) OVER (ORDER BY UnitPrice)
        WHEN 1 THEN 'Odav kaup'
        WHEN 5 THEN 'Kallis kaup'
        ELSE ''
    END AS Mark
FROM Products 
ORDER BY CategoryID, ProductName
(10 rows affected)
Total execution time: 00:00:00.011
Out[44]:
ProductNameCategoryIDUnitPriceHinnaTaseMark
r4NULL0,00001Odav kaup
Chai120,00003
Chang119,00003
Chartreuse verte118,00003
Cote de Blaye1263,50005Kallis kaup
Guarana Fantastica14,50001Odav kaup
Ipoh Coffee146,00005Kallis kaup
Lakkalikoori118,00003
Laughing Lumberjack Lager114,00002
Outback Lager115,00002
In [46]:
--Iga kauba kategooria kolm kõige odavama hinnaga kaubad
WITH Tabel AS ( 
SELECT ProductName, C.CategoryName, UnitPrice,
        DENSE_RANK() OVER (PARTITION BY CategoryName Order BY UnitPrice) as PriceNr
FROM Products P INNER JOIN Categories  C ON C.CategoryID=P.CategoryID )
SELECT  *
FROM Tabel
WHERE PriceNr <=3
(25 rows affected)
Total execution time: 00:00:00.016
Out[46]:
ProductNameCategoryNameUnitPricePriceNr
Guarana FantasticaBeverages4,50001
Rhonbrau KlosterbierBeverages7,75002
Laughing Lumberjack LagerBeverages14,00003
Sasquatch AleBeverages14,00003
Aniseed SyrupCondiments10,00001
Original Frankfurter grune So?eCondiments13,00002
Genen ShouyuCondiments15,50003
Teatime Chocolate BiscuitsConfections9,20001
Zaanse koekenConfections9,50002
Sir Rodney's SconesConfections10,00003
GeitostDairy Products2,50001
Gorgonzola TelinoDairy Products12,50002
Queso CabralesDairy Products21,00003
Filo MixGrains/Cereals7,00001
TunnbrodGrains/Cereals9,00002
Singaporean Hokkien Fried MeeGrains/Cereals14,00003
TourtiereMeat/Poultry7,45001
Pate chinoisMeat/Poultry24,00002
Perth PastiesMeat/Poultry32,80003
Longlife TofuProduce10,00001
TofuProduce23,25002
Uncle Bob's Organic Dried PearsProduce30,00003
KonbuSeafood6,00001
Rogede sildSeafood9,50002
Jack's New England Clam ChowderSeafood9,65003
In [3]:
--Iga kategooria kõige odavad kaubad on tärni(de)ga mõrgistatud
WITH Tabel AS ( 
SELECT ProductName, C.CategoryName, UnitPrice,
        DENSE_RANK() OVER (PARTITION BY CategoryName Order BY UnitPrice) as PriceNr
FROM Products P INNER JOIN Categories  C ON C.CategoryID=P.CategoryID )
SELECT TOP 10 ProductName + CASE PriceNr
                        WHEN 1 THEN ' **' -- Kõige odavad
                        WHEN 2 THEN ' *' -- Ka odavad, on teisel kohal 
                        END as ProductName
                ,CategoryName, UnitPrice
FROM  Tabel
WHERE PriceNr <=3
(10 rows affected)
Total execution time: 00:00:00.014
Out[3]:
ProductNameCategoryNameUnitPrice
Guarana Fantastica **Beverages4,5000
Rhonbrau Klosterbier *Beverages7,7500
NULLBeverages14,0000
NULLBeverages14,0000
Aniseed Syrup **Condiments10,0000
Original Frankfurter grune So?e *Condiments13,0000
NULLCondiments15,5000
Teatime Chocolate Biscuits **Confections9,2000
Zaanse koeken *Confections9,5000
NULLConfections10,0000
In [6]:
--viis kõige populaarsemat kaupa (müüdud arvu järgi) aastate lõikes

WITH Tabel AS ( 
SELECT 
        DENSE_RANK() OVER (PARTITION BY YEAR(OrderDate) ORDER BY SUM(Quantity) DESC) as DenseRank,
         ProductName, year(OrderDate) AS Years --, SUM(Quantity) as ProductsCount --andmed
        FROM Products P INNER  JOIN [Order Details] O 
         ON P.ProductID=O.ProductID INNER JOIN Orders Ord ON O.OrderID=Ord.OrderID
GROUP BY ProductName, year(OrderDate))
SELECT *
FROM Tabel
WHERE DenseRank <= 5
(15 rows affected)
Total execution time: 00:00:00.026
Out[6]:
DenseRankProductNameYears
1Gorgonzola Telino1996
2Camembert Pierrot1996
3Steeleye Stout1996
4Chartreuse verte1996
5Flotemysost1996
1Gnocchi di nonna Alice1997
2Raclette Courdavault1997
3Camembert Pierrot1997
4Gorgonzola Telino1997
5Rhonbrau Klosterbier1997
1Konbu1998
2Guarana Fantastica1998
3Camembert Pierrot1998
4Raclette Courdavault1998
5Uncle Bob's Organic Dried Pears1998