SQL HAVING

SQL HAVING



DEFINICJA

HAVING służy do filtrowania wyników zapytania z grupowaniem. Działa na grupach wierszy a nie na pojedynczych wierszach.

SQL HAVING

SELECT
nazwy_kolumy(kolumn)
FROM
nazwa_tabeli
GROUP BY  
kryteria_grupowania
HAVING
kryteria_filtrowania

 


Przykład zastosowania HAVING (baza Adventureworks)

Wyświetl wartość poszczególnych zamówień, których wartość jest większa niż 15000.

SELECT
SalesOrderID AS IdZamówienia
,SUM(UnitPrice) AS WartośćZamówienia
FROM
Sales.SalesOrderDetail
GROUP BY
SalesOrderID
HAVING
SUM(UnitPrice) > 15000


Przykład zastosowania HAVING (baza Northwind)

Zlicz ile pozycji mają poszczególne zamówienia. Wyświetl tylko te zamówienia, które mają powyżej 2 pozycje i posortuj je malejąco.

SELECT
OrderID AS IdZamówienia
,COUNT(*) AS IlośćPozycji
FROM
[Order Details]
GROUP BY
OrderID
HAVING 
COUNT(*) > 2
ORDER BY
IlośćPozycji DESC


SQL GROUP BY

SQL GROUP BY()



DEFINICJA

Dzięki GROUP BY możemy pogrupować wyniki zapytania wg zadanych kryteriów. Wewnątrz każdej grupy możemy wykonać np. jakąs funkcję agregującą np. SUM(), COUNT() itd.

SQL GROUP BY()

SELECT
nazwy_kolumy(kolumn)
FROM
nazwa_tabeli
GROUP BY
kryteria_grupowania

 


Przykład zastosowania GROUP BY() (baza Adventureworks)

Wyświetl wartość poszczególnych zamówień.

SELECT
SalesOrderID AS IdZamówienia
,SUM(UnitPrice) AS WartośćZamówienia
FROM
Sales.SalesOrderDetail
GROUP BY
SalesOrderID


Przykład zastosowania COUNT() (baza Northwind)

Wyświetl ile pozycji mają poszczególne zamówienia.

SELECT
OrderID
,COUNT(*)
FROM
[Order Details]
GROUP BY
OrderID