Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Grupowanie danych: Funkcje grupujące w SQL cz. I

Funkcje grupujące to bardzo ważny element w różnego rodzaju rozbudowanych kwerendach pobierających dane z bazy. Dzięki nim możemy wykonywać różne operacje na zbiorach (wierszach) otrzymując tym samym dokładnie spersonalizowane na nasze potrzeby dane.

Grupowanie danych w SQL polega na łączeniu ze sobą kilku wierszy w jeden. Jednym z najprostszych przykładów na grupowanie danych jest właśnie zgrupowanie całej tabeli czyli połączenie wszystkich jej wierszy w jeden.

W SQL mamy dostępną całą gamę funkcji grupujących są to między innymi:

  • avg(),
  • count(),
  • sum(),
  • min(),
  • max(),
  • stdev(),
  • stdevp().

Na osobny temat zasługuje klauzula GROUP BY, którą opisałem w drugiej części tego artykułu.

AVG()

Funkcja avg() zwraca średnią wartość liczb grupy bądź tabeli z danej kolumny podanej jako argument.

Przykład:

SELECT AVG(wiek) FROM tab1;

Uwaga: Funkcja ta przyjmuje tylko liczby, bądź kolumny z „liczbowym” typem danych.

COUNT()

Funkcja count() jak wskazuje jej nazwa zwraca liczbę całkowitą przekazanych w postaci argumentu wartości. Funkcje tą najczęściej wykorzystuje się do sprawdzania liczby wierszy w danej grupie.

Przykładowe zapytanie zliczające liczbę wierszy w tabeli tab1:

SELECT COUNT(*) FROM tab1;

lub:

SELECT COUNT(kolID) FROM tab1;

Można również wyeliminować zliczanie powtarzających się danych za pośrednictwem słowa kluczowego DISTINCT:

SELECT COUNT(DISTINCT id) FROM tab1;

Oczywiście należy pamiętać, że symbolu „*” nie można poprzedzić słowem kluczowym DISTINCT gdyż funkcja COUNT() wywołana dla argumentu „*” zwraca liczbę wszystkich wierszy grupy bądź tabeli również z tymi pustymi i powtórzonymi.

SUM()

Funkcja sum() zwraca sumę podanych wartości:

SELECT SUM(klienci) FROM tab1;

MIN()

Funkcja min() jak sama nazwa wskazuje zwraca najmniejszą wartość. Jako argument może przyjmować  dane typu „liczbowego”, daty i czasu, a nawet tekstowe. Ważne jest to, że ciąg znaków porównywany jest alfabetycznie.

Przykład:

SELECT MIN(wiek) FROM tab1;

MAX()

Funkcja max() jak sama nazwa wskazuje zwraca największą wartość. Jako argument może przyjmować  dane typu „liczbowego”, daty i czasu, a nawet tekstowe. Ważne jest to, że ciąg znaków porównywany jest alfabetycznie.

Przykład:

SELECT MAX(wiek) FROM tab1;

STDEV()

stdev() zwraca odchylenie standardowe podanych jako argument wartości liczbowych.

Przykład:

SELECT STDEV(ceny) FROM tab1;

STDEVP()

stedevp() zwraca odchylenie standardowe próbki podanej jako argument:

Przykład:

SELECT STDEVP(ceny) FROM tab1;

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , , , , , , , , ,

Dodaj komentarz

Komentarze (2)

  • Michał pisze:

    A jeżeli chcę sumę, ale muszę dodać inne rekordy do komendy ? Np. Select (tutaj coś jest), (I tutaj też jest jakiś rekord) SUM(Tutaj jest to co sumuje)
    From (jakiś zbiór)
    Where (To coś)=(To inne coś)
    To czy taka składnia zadziała ?

    • Hej Michał,

      Kwerenda którą podałeś raczej nie zadziała. Jeśli sumujesz kolumnę i dodatkowo pobierasz inne kolumny, musisz zrobić grupowanie – bo jak ma zadziałać suma? Suma policzy się dla każdego rekordu, a jej składnikami będą wszystkie rekordy jakie zostały zgrupowane dla tego jednego.

      Przykładowo: SELECT lastName, SUM(age) FROM users GROUP BY lastname – taka kwerenda zgrupuje ludzi o tym samym nazwisku, a następnie zsumuje ich wiek. Dla każdego nazwiska będzie suma wieku wszystkich użytkowników (o tym nazwisku), którzy reprezentowani są w tym jednym rekordzie.

Odpowiedz

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

Pin It on Pinterest