Ի՞նչ տարբերություն կա պատուհանի ֆունկցիաների և GROUP BY-ի միջև։
sobes.tech AI
Պատասխան AI-ից
Վահանակային ֆունկցիաները և GROUP BY-ը SQL-ում ծառայում են տարբեր նպատակների համար, թեև երկուսն էլ աշխատում են ամփոփված տվյալների հետ:
GROUP BY միավորում է տողերը նշված սյունակների հիման վրա և վերադարձնում է մեկ տող յուրաքանչյուր խմբի համար: Կարող են կիրառվել ամփոփիչ ֆունկցիաներ (SUM, COUNT և այլն), բայց արդյունքը կրճատվում է մեկ տող յուրաքանչյուր խմբի համար:
Վահանակային ֆունկցիաները հաշվարկում են ամփոփագրեր կամ այլ հաշվարկներ տողերի հավաքածուի վրա, որը կոչվում է վահանակ, առանց նվազեցնելու վերադարձվող տողերի քանակը: Ամեն մի տող պահվում է, բայց նրա հետ ավելացվում է վահանակի վրա հաշվարկված ֆունկցիայի արդյունքը:
Օրինակ՝
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;
Այստեղ յուրաքանչյուր տողի համար հաշվարկվում է միջին աշխատավարձը բաժնի համար, բայց տողերը չեն խմբագրվում — մենք տեսնում ենք բոլոր աշխատակիցներին լրացուցիչ սյունակով:
Ի տարբերություն GROUP BY-ի, վահանակային ֆունկցիաները թույլ են տալիս վերլուծել տվյալները խմբի կոնտեքստում, առանց կորցնելու անհատական տողերի մանրամասները։