Sobes.tech
Middle

Kā atšķiras logs funkcijas no GROUP BY?

sobes.tech AI

Atbilde no AI

Logu funkcijas un GROUP BY SQL kalpo dažādiem mērķiem, lai gan abas strādā ar agregētiem datiem.

GROUP BY apvieno rindas pēc norādītajām kolonnām un atgriež vienu rindu katrai grupai. Var tikt piemēotas agregātas funkcijas (SUM, COUNT utt.), bet rezultāts tiek samazināts līdz vienai rindiņai katrai grupai.

Logu funkcijas aprēķina agregātus vai citus aprēķinus uz rindām, kas saucas logs, nesamazina atgriezto rindu skaitu. Katra rinda tiek saglabāta, bet pie tās tiek pievienots funkcijas rezultāts, kas aprēķināts uz loga.

Piemērs:

SELECT
  employee_id,
  department_id,
  salary,
  AVG(salary) OVER (PARTITION BY department_id) AS avg_dept_salary
FROM employees;

Šeit katrai rindai tiek aprēķināts vidējais atalgojums pēc nodaļas, bet rindas netiek grupētas — mēs redzam visus darbiniekus ar papildus kolonnu.

Atšķirībā no GROUP BY, logu funkcijas ļauj analizēt datus konteksta grupā, nezaudējot detaļas par atsevišķām rindām.