Agreguojančios funkcijos apskaičiuoja vieną reikšmę iš eilučių aibės — COUNT, SUM, AVG, MIN, . Jos yra būtinos duomenims susumuoti (iš viso, vidurkiams, skaičiams), ypač sujungtos su .
Agreguojančios funkcijos apskaičiuoja vieną reikšmę iš eilučių aibės — COUNT, SUM, AVG, MIN, . Jos yra būtinos duomenims susumuoti (iš viso, vidurkiams, skaičiams), ypač sujungtos su .
MAXGROUP BYSELECT
COUNT(*) AS total_rows, -- count all rows
COUNT(email) AS rows_with_email, -- count NON-NULL emails (ignores NULLs!)
SUM(amount) AS total_amount, -- sum of a column
AVG(price) AS average_price, -- average
MIN(price) AS lowest, -- minimum
MAX(price) AS highest -- maximum
FROM orders;
Kiekviena funkcija sumažina daug eilučių iki vienos reikšmės. SUM/AVG veikia su skaičiais; MIN/MAX su skaičiais, datomis arba tekstu; COUNT su bet kuo.
COUNT(*) -- counts ALL rows (including those with NULLs)
COUNT(email) -- counts only rows where email is NOT NULL
COUNT(DISTINCT country) -- counts UNIQUE non-null values
COUNT(*) suskaičiuoja visas eilutes, bet COUNT(column) suskaičiuoja tik eilutes, kuriose tas stulpelis yra ne NULL — subtilus, bet svarbus skirtumas. COUNT(DISTINCT col) suskaičiuoja unikalias reikšmes.
-- aggregate PER GROUP instead of the whole table
SELECT country, COUNT(*) AS users, AVG(age) AS avg_age
FROM users
GROUP BY country; -- one result row per country
-- → for each country: how many users and their average age
Be GROUP BY, agreguojanti funkcija susumuoja visą rezultatą į vieną eilutę. Su GROUP BY, ji sukuria vieną santrautos eilutę kiekvienai grupei — tipinis, galingas naudojimas.
-- ❌ ERROR — can't mix an aggregate with a non-grouped column
SELECT name, COUNT(*) FROM users; -- which name? ambiguous
-- ✅ either group by it, or only select aggregates
SELECT country, COUNT(*) FROM users GROUP BY country;
Agreguojančios funkcijos yra būtinos duomenims susumuoti ir analizuoti — bendrų sumų, vidurkių, skaičiaus ir ekstremalių reikšmių apskaičiavimas yra nuolatinis poreikis ataskaitose, analitikoje, ataskaitų panelėse ir programos logikoje, todėl jų supratimas yra pagrindinės SQL žinios.
Žinoti pagrindines funkcijas (COUNT, SUM, AVG, MIN, MAX) ir kaip jos sumažina eilučių aibes iki vienos reikšmės, yra būtina bet kuriai duomenų sumarizacijai.
Svarbus, dažnai nesuprastas detalė yra COUNT(*) vs COUNT(column) skirtumas (COUNT(*) suskaičiuoja visas eilutes, COUNT(column) suskaičiuoja tik ne-NULL reikšmes — o tai gali duoti skirtingus, stebinančius rezultatus), taip pat COUNT(DISTINCT) unikaliosioms reikšmėms.
Galingiausia, agreguojančios funkcijos sujungiamos su GROUP BY, kad būtų sukurtos santraukos kiekvienai grupei (skaičiai/vidurkiai pagal kategoriją) — analitinių užklausų pagrindas.
Supratimas apie klaidą, kad negalite maišyti agreguojančių funkcijų su ne-sugrupuotais stulpeliais (dažna klaida), taip pat svarbus.
Kadangi duomenų sumariavimas yra visuotinis duomenų bazės uždavinys (kiekviena ataskaita, ataskaitų panelė ir analitinė užklausa naudoja agreguojančias funkcijas), ir kadangi funkcijų supratimas, COUNT subtilybės ir ypač jų sujungimas su GROUP BY yra pagrindinis duomenų analizės dalykas SQL, agreguojančių funkcijų įvaldymas yra pagrindinės, dažnai taikomos žinios, būtinos darbui su duomenimis — sujungiant pagrindinį užklausų sudarymo ir analitinę, sumarizavimo galią, kuri SQL vertinga ataskaitų ir įžvalgų srityje.