Middle
Waarvoor worden vensterfuncties in SQL gebruikt?
sobes.tech AI
Antwoord van AI
De vensterfuncties in SQL voeren aggregaties uit in een set rijen die gerelateerd zijn aan de huidige rij, maar groeperen de resultaatset niet. Dit maakt het mogelijk om berekeningen uit te voeren zoals cumulatieve sommen, bewegende gemiddelden of rangschikkingen, terwijl alle rijen van de oorspronkelijke query behouden blijven.
De belangrijkste doelen van het gebruik van vensterfuncties:
- Rangschikking: Toewijzen van een rang aan elke rij binnen een bepaald venster.
-- Krijg de rang van werknemers op basis van salaris binnen elke afdeling SELECT employee_name, salary, department, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank FROM employees; - Statistieken berekenen per groep rijen zonder groepering: Gegevensaggregatie binnen een "venster" van rijen, terwijl de detaillering op rijniveau behouden blijft.
-- Bereken het gemiddelde salaris per afdeling voor elke rij SELECT employee_name, salary, department, AVG(salary) OVER (PARTITION BY department) as avg_department_salary FROM employees; - Vergelijking van de huidige rij met andere rijen in het venster: Toegang tot gegevens uit vorige of volgende rijen in het venster.
-- Krijg het salaris van de vorige werknemer in de afdeling in aflopende volgorde van salaris SELECT employee_name, salary, department, LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary FROM employees; - Berekeningen met cumulatieve som: Berekening van sommen, gemiddelden en andere aggregaties in een oplopende cumulatie.
-- Bereken de cumulatieve som van verkopen per datum SELECT sale_date, amount, SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales FROM sales;
In tegenstelling tot gewone aggregatiefuncties (GROUP BY), collimiteren vensterfuncties rijen niet samen, waardoor ze een krachtig hulpmiddel zijn voor analytische queries en gedetailleerde gegevensanalyse.