Funkcje agregujące w MsSQL

Tomasz Kenig/ / Kurs SQL Server/ 4 komentarzy

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:

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.

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.

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.

4 Comments

  1. W tym przykładzie jest baza danych adventureWorks2016, a cały czas pracowaliśmy na wersji z 2014 roku 🙂
    wiec przykład lekko nietrafione.

    Zaś ogólnie bardzo polecam ten Kurs! przerobiłem dokładnie VBA excel i teraz jestem na SQLu 🙂

  2. Zrobiłem przykład na 2014 wersji i mi nie sortuje wartości po gender. Co jest nie tak??

    use AdventureWorks2014
    go

    select
    a.gender,
    sum(a.VacationHours) as Col1,
    avg(a.vacationhours) as col2,
    Min(a.VacationHours) as Col3,
    MAX(a.VacationHours) as Col4,
    Count(a.VacationHours) as Col5
    from HumanResources.Employee a
    ORDER BY a.gender;

    1. Cześć, niestety nie mam teraz dostępu do bazy ad2014, ale z tego co widzę, chodzi o grupowanie. Musimy go użyć, gdy agregujemy na podstawie kolumny:
      select
      a.gender,
      sum(a.VacationHours) as Col1,
      avg(a.vacationhours) as col2,
      Min(a.VacationHours) as Col3,
      MAX(a.VacationHours) as Col4,
      Count(a.VacationHours) as Col5
      from HumanResources.Employee a
      group by A.GENDER
      ORDER BY a.gender;

      1. Dokladnie o to chodziło -> pomyliłem order by z group by
        dzieki!!!

Zostaw Komentarz

Twój adres email nie zostanie opublikowany.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">