Baza : Adventureworks
Zadanie nr: 27a
Treść: Oblicz (w osobnej kolumnie) czy wartość zamówienia jest mniejsza (wartość 0) czy większa/równa (wartość 1) średniej wartość zamówień. Średnią wartość zamówień oblicz przed głównym zapytaniem i jej wartość "wrzuć" do zmiennej i wykorzystaj ją w zapytaniu głownym.
Polecenia/funkcje w zapytaniu: SELECT, FROM, CASE, SUM(), AVG(), GROUP BY, DECLARE, SET
Rozwiązanie:
Zapytanie:
DECLARE @srednia float;
SET @srednia = (SELECT
AVG(Suma) AS ŚredniaWartośćZamówienia
FROM
(
SELECT
SalesOrderID
,SUM(UnitPrice)AS Suma
FROM
Sales.SalesOrderDetail
GROUP BY
SalesOrderID)AS query);
SELECT
SalesOrderID
,SUM(UnitPrice)AS Suma
,CASE
WHEN SUM(UnitPrice)< (@srednia) THEN 0
ELSE 1
END AS [0-mniejsze niż śr./1-większe,równe śr]
FROM
Sales.SalesOrderDetail
GROUP BY
SalesOrderID
Wynik uruchomienia zapytania
Liczba rekordów: 31465