Skip to main content Link Menu Expand (external link) Document Search Copy Copied
RBD Lab 08

Agregacja, złączenia, funkcje SQL

Łolaboga, mnóstwo rzeczy naraz


Funkcje agregujące w SQL pozwalają na zwrócenie wyniku kalkulacji wartości z wielu kolumn. Są to funkcje SQL działające na grupach danych.

SELECT COUNT(*) FROM Cars

Zwróci po prostu ilośc wierszy w tabeli Cars. Ale już

SELECT COUNT(*) FROM Cars GROUP BY make

Policzy nam, ile mamy pojazdów w zależności od marki. Aby ta informacja miała jakikolwiek sens, przydałoby się jeszcze wyświetlic te marki samochodów, które zostały zliczone

SELECT COUNT(*), make FROM Cars GROUP BY make

Funkcji agregujących mamy pięc:

  • COUNT()
  • SUM()
  • MAX()
  • MIN()
  • AVG()

Każdej z nich możemy, a wręcz powinniśmy używac wraz z grupowaniem. I tak:

SELECT AVG(year) FROM Cars

zwróci nam średni rocznik samochodu w całej bazie, natomiast

SELECT AVG(year), make FROM Cars GROUP BY make

zwróci już średni rocznik z podziałem na marki samochodów.

Filtrowanie

W standardowych zapytaniach SQL skorzysta możemy ze słówka kluczowego WHERE, aby odfiltrowa tylko interesujące nas wyniki. W wypadku zapyta z funkcjami agregującymi takiej możliwości nie ma, skorzysta należy ze słówka kluczowego HAVING, natomiast zasada korzystania będzie identyczne w obu wypadkach

SELECT AVG(year), make FROM Cars GROUP BY make HAVING make = 'Buick'

W identyczny sposób znajdowa możemy najmłodsze i najstarsze samochody, a jakby ktoś bardzo chciał, to można też zsumowac ich roczniki. Nie wiem po co, ale się da.

Funkcje wbudowane

MySQL dysponuje ogromną liczbą wbudowanych funkcji znakowych, numerycznych, datowych i innych. Poniżej krótkie zestawienie najczęściej używanych, omówimy je na zajęciach. Po więcej informacji o nich oraz po inne zapraszam na w3schools

Funkcje znakowe

  • CONCAT()
  • LEFT()
  • RIGHT()
  • UPPER()
  • LOWER()
  • STRCMP()
  • TRIM()

Funkcje numeryczne

  • CEIL()
  • FLOOR()
  • ROUND()
  • RAND()
  • Obliczeniowe:
    • SIN()
    • COS()
    • DEGREES()
    • MOD()
    • POW()

Funkcje datowe

  • ADDDATE()
  • ADDTIME()
  • CURDATE()
  • DAY()
  • DAYNAME()
  • NOW()
  • TIMEDIFF()