Sobes.tech
Middle

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.