background image

Automatyka Przemysłowa 

dr inż. Jakub Kołota 

Moduł III -  Grupowanie i podsumowywanie danych 

 
 

Tabele wykorzystywane w przykładach: HumanResources.Employee oraz Person.Address 

 

 

Zadanie nr  1 

 
  Uruchom wirtualną maszynę 2778A-NY-SQL-01 
  Zaloguj się podając login: Administrator , hasło:  Pa$$w0rd 
 
 
 

Zadanie nr  2 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl średnią VacationHours z aliasem ‘AverageVacationHours’ oraz sumę SickLeaveHours z 

aliasem ‘TotalSickLeave Hours ’ z tabeli HumanResources.Employee  

  Wyniki ogranicz dla JobTitle zawierającego tekst  ‘Vice President’ 
 
 
 

Zadanie nr  3 

 
  Połącz się z bazą danych AdventureWorks2008 
  Zlicz wszystkie wiersze z tabeli HumanResources.Employee używając funkcji COUNT() 
 

background image

Zadanie nr  4 

 
  Połącz się z bazą danych AdventureWorks2008 
  Zlicz wszystkie wiersze z tabeli Person.Address używając funkcji COUNT(), dla których kolumna 

AddressLine2 ma wartość NULL 

  W celu rozwiązania zadania użyj funkcji ISNULL() 
 
 
 

Zadanie nr  5 

 
  Połącz się z bazą danych AdventureWorks2008 
  Zlicz wszystkie wiersze z tabeli Person.Address dla których kolumna AddressLine2 nie ma 

wartości NULL 

  W celu rozwiązania zadania użyj tylko funkcji COUNT() 
  Po zapoznaniu się z wynikami dodaj klauzulę DISTINCT wewnątrz funkcji COUNT () i wykonaj 

zapytanie ponownie odnotowując różnicę 

 
 
 
 
Tabele wykorzystywane w przykładach: Sales.SalesOredrDetailSales.SalesPerson
Production.ProductInventory oraz Production.Product 
 

 

 

background image

Zadanie nr  6 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość ProductID, średnią z DaysToManufacture z aliasem 

‘AvgDaysToManufacture’ z tabeli Production.Product 

 
 
 

Zadanie nr  7 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość Color, średnią z ListPrice z aliasem ‘AvgListPrice’ z tabeli Production.Product 
  Wyniki ogranicz do ProductNumber równego ‘FR-R72R-58’ 
  Po zapoznaniu się z wynikami dodaj klauzulę ALL wewnątrz instrukcji GROUP BY i wykonaj 

zapytanie ponownie odnotowując różnicę 
 

 
 

Zadanie nr  8 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość ProductID, średnią z OrderQty z aliasem ‘AverageQuantity’, sumę z 

LineTotal z aliasem ‘Total’ z tabeli Sales.SalesOrderDetail 

  Wyniki pogrupuj względem ProductID i wybierz grupy mające sumę  z LineTotal większą niż 

$1000000 i średnią z OrderQty mniejszą niż 3 
 

 
 

Zadanie nr  9 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość ProductIDShelf, sumę z Quantity z aliasem ‘QtySum’ z tabeli 

Production.ProductInventory 

  Wyniki pogrupuj względem ROLLUP( ProductID, Shelf) 

 

 
 

Zadanie nr  10 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość SalesOrderIDProductID, sumę z OrderQty z aliasem ‘SumQuantity’ z tabeli 

Sales.SalesOrderDetail 

  Wyniki pogrupuj względem CUBE( SalesOrderID, ProductID) 
  Wyniki posortuj względem SalesOrderIDProductID 

 

 
 

background image

Zadanie nr  11 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość SalesQuota, sumę z SalesYTD z aliasem ‘TotalSalesYTD’, z tabeli 

Sales.SalesPerson 

  Wyniki pogrupuj względem CUBE(SalesQuota)  
  Po zapoznaniu się z wynikami dodaj kolumnę GROUPING(SalesQuota) z aliasem ‘Grouping’ 

określając  przynależność kolumny SalesQuota do grupy . Wykonaj zapytanie ponownie 
odnotowując zasadę działania funkcji GROUPING() 

 
 
 

Zadanie nr  12 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość ProductIDShelf, sumę z Quantity z aliasem ‘TotalQuantity’,  przynależność 

do grupy kolumny Shelf z aliasem ‘ShelfGrouping’ z tabeli Production.ProductInventory 

  Wyniki pogrupuj względem CUBE(ProductIDShelf)  
 
 
 

Zadanie nr  13 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość SalesOrderIDUnitPriceUnitPriceDiscount  z tabeli Sales.SalesOrderDetail 
  Wyniki posortuj względem kolumny SalesOrderID 
  Dodaj klauzulę podsumowującą COMPUTE liczącą sumę z UnitPrice i sumę z UnitPriceDiscount   
 
 
 

Zadanie nr  14 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl numer wiersza funkcją ROW_NUMBER() porządkując ją względem SalesYTD malejąco z 

aliasem  ‘Row Number’BusinessEntityIDSalesYTD z tabeli Sales.SalesPerson 

  Wyniki ogranicz dla TerritoryID  różnych od NULL i SalesYTD różnego od zera 
  Podpowiedź :  struktura funkcji ROW_NUMBER() OVER (PARTITION BY x ORDER BY y

 

 

Zadanie nr  15 

 
  Połącz się z bazą danych AdventureWorks2008 
  Użyj funkcji rankingującej RANK() partycjonując względem LocationID  i porządkując ją względem 

Quantity  malejąco z aliasem  ‘Rank’ProductIDLocationID, Quantity z tabeli 
Production.ProductInventory 

  Wyniki posortuj względem ‘Rank’ 
  Podpowiedź :  struktura funkcji RANK() OVER (PARTITION BY x ORDER BY y) 

 

background image

 

Zadanie nr  16 

 
  Połącz się z bazą danych AdventureWorks2008 
  Zmodyfikuj rozwiązanie poprzedniego zadania używając funkcji DENSE_RANK() zamiast funkcji 

RANK() - wykonaj zapytanie ponownie odnotowując różnicę 
 

 
 
 

Zadanie nr  17 

 
  Połącz się z bazą danych AdventureWorks2008 
  Użyj funkcji rankingującej NTILE(4), tworzącej cztery grupy i porządkującej je względem SalesYTD  

malejąco z aliasem  ‘Quartile’SalesYTDBusinessEntityID z tabeli Sales.SalesPerson 

  Wyniki ogranicz dla TerritoryID  różnych od NULL i SalesYTD różnego od zera 
  Podpowiedź :  struktura funkcji NTILE(x) OVER (PARTITION BY y ORDER BY z) 
 
 
 
 

Zadanie nr  18 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wyświetl zawartość NameRedBlueBlack  z zapytania 

 
SELECT  SafetyStockLevel, Color, Name FROM Production.Product 
 
poddanego operacji PIVOT względem sumy z SefetyStockLevel dla Color w zbiorze  (Red, Blue, 
Black) 

  Wyniki ogranicz dla Name zawierających  ‘Helmet’   
  Wyniki posortuj względem kolumny Name 

 

 
 
 

Zadanie nr  20 

 
  Połącz się z bazą danych AdventureWorks2008 
  Wykonaj poniższy przykład prezentujący operację UNPIVOT 
 

SELECT Name, Attribute, Value FROM Production.Product  AS P 
 UNPIVOT  
(Value FOR Attribute IN (StandardCost, ListPrice)) AS UnPVT 

 
Bardziej złożona wersja rozwiązania z rzutowaniem typów: 
 

SELECT Name, Attribute, Value FROM 

background image

SELECT Name,  

CAST (ProductLine as SQL_Variant) ProductLine, 
CAST (StandardCost as Sql_variant) StandardCost, 
CAST (ListPrice as sql_variant) ListPrice 

FROM Production.Product)  AS P 
 UNPIVOT  
(Value FOR Attribute IN (ProductLine, StandardCost, ListPrice)) AS UnPVT 
 Order By Name Desc