Tagi: top

Zadanie 16.

Wykorzystamy tabelę wynikową uzyskaną w zadaniu 15.

1. Powyższą tabelę przekształć do postaci wspólnego wyrażenia tablicowego (CTE), nazwanego Tab.

2. W kwerendzie zewnętrznej wybierz „20% najcenniejszych klientów”: nazwę firmy, łączną wartość zamówień złożonych przez daną firmę oraz łączną wartość wszystkich zamówień złożonych przez wszystkich klientów. Interesuje nas tylko 20% firm z najwyższymi łącznymi wartościami zamówień.

Baza: Northwind, Tabele: CTE Tab, dbo.order Subtotals, Kolumny: CompanyName, Subtotal, Wynik: 18 rows

s16

 

 

 

 

Rozwiązanie

WITH Tab AS (
SELECT o.OrderID, c.CompanyName, os.Subtotal
FROM dbo.Orders as o JOIN dbo.Customers as c on o.CustomerID = c.CustomerID
JOIN dbo.[Order Subtotals] as os on o.OrderID = os.OrderID
)

SELECT TOP (20) PERCENT CompanyName, SUM(Subtotal) as 'CustSum', ( SELECT SUM(Subtotal) FROM dbo.[Order Subtotals] ) as TotalSum
FROM Tab
GROUP BY CompanyName
ORDER BY CustSum DESC;

[collapse]

Zadanie 12.

1. Stwórz zapytanie, które pokaże nam najczęściej zamawiane produkty.

2. Powyższe zapytanie przekształć do postaci tabeli pochodnej; w kwerendzie zewnętrznej wybierz 15 najczęściej zamawianych produktów. (Uwaga: więcej niż jeden produkt może być zamówiony daną ilość razy)

Baza: Northwind, Tabela: dbo.Order Details, Kolumny: ProductID, OrderID, Wynik: 17 rows

s12

 

 

 

 

 

Rozwiązanie

SELECT TOP(15) WITH TIES *
FROM (
SELECT ProductID, COUNT(OrderID) as Ordrs
FROM dbo.[Order Details]
GROUP BY ProductID
) as Tab
ORDER BY Ordrs DESC;

[collapse]

Zadanie 3.

Znajdź 3 zamówienia o największej wartości.

Baza: Northwind, Tabela: dbo.Order Details, Kolumny: OrderID, UnitPrice, Quantity, Wynik: 3 rows

5

Rozwiązanie


SELECT OrderID, SUM(UnitPrice*Quantity) as Suma
FROM dbo.[Order Details]
GROUP BY OrderID
ORDER BY Suma DESC
OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY;

Można tu użyć również funkcji TOP (SELECT TOP(3)…).

[collapse]