Ποια είναι η διαφορά μεταξύ μιας λειτουργίας παραθύρου και μιας λειτουργίας συγκέντρωσης στο SQL;
sobes.tech AI
Απάντηση από AI
Η λειτουργία σύνοψης σε SQL (π.χ., SUM, AVG, COUNT) υπολογίζει μια τελική τιμή για μια ομάδα γραμμών και επιστρέφει μία γραμμή ανά ομάδα. Για παράδειγμα, το SUM(salary) θα υπολογίσει το άθροισμα των μισθών σε ολόκληρη την ομάδα.
Η λειτουργία παραθύρου (window function) επίσης λειτουργεί με ομάδες γραμμών, αλλά επιστρέφει το αποτέλεσμα για κάθε γραμμή, λαμβάνοντας υπόψη το πλαίσιο του παραθύρου (το σύνολο γραμμών γύρω από την τρέχουσα). Για παράδειγμα, το SUM(salary) OVER (PARTITION BY department) θα επιστρέψει το άθροισμα των μισθών ανά τμήμα για κάθε γραμμή, χωρίς να μειώσει το αποτέλεσμα σε μία γραμμή.
Παράδειγμα:
SELECT employee_id, department, salary,
SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;
Εδώ, για κάθε γραμμή, θα εμφανίζεται το άθροισμα των μισθών στο τμήμα, αντί για μία γραμμή ανά τμήμα, όπως με τη χρήση της λειτουργίας σύνοψης με GROUP BY.