Funkcje agregujące w MsSQL

1. Czym są funkcje agregujące i jak ich używać?

Funkcje agregujące w SQL Server w odróżnieniu od pozostałych funkcji cechuje przede wszytkim to, że zwracają wynik z obliczeń pionowych wykonanych na kolumnie. Za ich pomocą możemy obliczyć przede wszystkim sumę kolumny, średnią z wartości w kolumnie, zliczyć wartości w kolumnie, obliczyć najniższą i najwyższą wartość występującą w danej kolumnie Najważniejsze funkcje agregujące MsSQL:

  • AVG – średnia
  • SUM – suma
  • MIN – minimum
  • MAX – maximum
  • COUNT – licznik wartości, zwaraca wynik o typie danych int
  • COUNT_BIG – licznik wartości, zwraca wynik o typie danych bigint

Poniżej najprostszy przykład wykorzystania funkcji agregującej COUNT. Wynikiem w tym wypadku będzie liczba rekordów w tabeli. Przykład wykonany na bazie AdventureWorks2016:

--tomaszkenig.pl
select 
count(*) as COL_1
from dbo.DimEmployee a ;

Poza wyżej wymienionymi funkcjami w SQL Server mamy także do dyspozycji inne funkcje agregujące, ważne szczególnie w obliczeniach statystycznych. O tych funkcjach napiszę w rozdziale o pozostałych funkcjach agregujących. Są to m.in. wariancje, odchylenia standardowe itp.

2. Przykład wykorzystania funkcji agregujących w MsSQL

W jaki sposób policzyć  sumę, średnią, minimum i maksimum? Poniżej krótki przykład na bazie AdventureWorks2016 przedstawiający najprostsze wykorzystanie funkcji agregujących.

--tomaszkenig.pl
use [AdventureworksDW2016CTP3]
go

select 
SUM(a.VacationHours) as COL_1,
AVG(a.VacationHours) as COL_2,
MIN(a.VacationHours) as COL_3,
MAX(a.VacationHours) as COL_4,
COUNT(a.EmployeeKey) as COL_5
FROM dbo.DimEmployee a;

Jeśli chcesz zagregować wartości co do konkretnej kolumny, np określającej płeć, miasto itp. możesz to zrobić przy pomocy grupowania GROUP BY. Jedyne, co powinieneś zrobić to wprowadzić w klauzuli SELECT kolumnę, wg. której chcesz grupować wartości. Następnie wstaw klauzulę GROUP BY na końcu skryptu zaraz za klauzulą WHERE. Po GROUP BY wprowadzamy nazwę kolumny, wg. której chcemy grupować wartości. Możemy wprowadzić tutaj dowolną liczbę kolumn. Grupowanie omówię szczegółowo w kolejnym rozdziale kursu.

use [AdventureworksDW2016CTP3]
go

select 
a.gender,
SUM(a.VacationHours) as COL_1,
AVG(a.VacationHours) as COL_2,
MIN(a.VacationHours) as COL_3,
MAX(a.VacationHours) as COL_4,
COUNT(a.EmployeeKey) as COL_5
from dbo.DimEmployee a 
GROUP BY a.gender;
Funkcje agregujące w SQL Server
Funkcje agregujące w SQL Server

Artykuł stanowi częśc kursu SQL Server. Jeśli masz jakieś pytania, możesz je zamieścić na forum bez logowania lub zostawić komentarz.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

7 komentarzy “Funkcje agregujące w MsSQL”