Middle
Kuo skiriasi lango funkcija nuo agregavimo funkcijos SQL?
sobes.tech AI
Atsakymas iš AI
SQL agregavimo funkcijos (pvz., SUM, AVG, COUNT) apskaičiuoja galutinę reikšmę grupei eilučių ir grąžina vieną eilutę kiekvienai grupei. Pavyzdžiui, SUM(salary) apskaičiuos visos grupės atlyginimų sumą.
Langų funkcija (window function) taip pat dirba su eilučių grupėmis, tačiau grąžina rezultatą kiekvienai eilutei, atsižvelgiant į lango (aplink esančių eilučių rinkinys) kontekstą. Pavyzdžiui, SUM(salary) OVER (PARTITION BY department) grąžins atlyginimų sumą pagal skyrių kiekvienai eilutei, nesumažindama rezultato iki vienos eilutės.
Pavyzdys:
SELECT employee_id, department, salary,
SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;
Čia kiekvienai eilutei bus parodyta skyriaus atlyginimų suma, o ne viena eilutė kiekvienam skyriui, kaip naudojant agregavimo funkciją su GROUP BY.