Kuo skiriasi lango funkcijos nuo GROUP BY?
sobes.tech AI
Atsakymas iš AI
Langelių funkcijos ir GROUP BY SQL tarnauja skirtingiems tikslams, nors abi dirba su agreguotais duomenimis.
GROUP BY sujungia eilutes pagal nurodytas stulpelių reikšmes ir grąžina po vieną eilutę kiekvienai grupei. Gali būti taikomos agregatinės funkcijos (SUM, COUNT ir kt.), tačiau rezultatas sumažinamas iki vienos eilutės kiekvienai grupei.
Langelių funkcijos skaičiuoja agregatus ar kitus skaičiavimus pagal eilutų rinkinį, vadinamą langeliu, nesumažindamos grąžinamų eilių skaičiaus. Kiekviena eilutė išsaugoma, tačiau prie jos pridedamas langelio funkcijos rezultatas.
Pavyzdys:
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Čia kiekvienai eilutei apskaičiuojamas vidutinis atlyginimas pagal skyrių, tačiau eilutės nėra grupuojamos — matome visus darbuotojus su papildomu stulpeliu.
Skirtingai nuo GROUP BY, langelių funkcijos leidžia analizuoti duomenis kontekste grupės, neprarandant detalių apie atskiras eilutes.