Sobes.tech
Middle

Ի՞նչ տարբերություն կա պատուհանի ֆունկցիաների և 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-ի, վահանակային ֆունկցիաները թույլ են տալիս վերլուծել տվյալները խմբի կոնտեքստում, առանց կորցնելու անհատական տողերի մանրամասները։