Sobes.tech
Middle

Терезе функциялары менен GROUP BY арасындагы айырма неде?

sobes.tech AI

AIден жооп

SQL-деги терезе функциялары жана GROUP BY ар башка максаттарга кызмат кылат, бирок экөө тең агрегатталган маалыматтар менен иштейт.

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'дан айырмаланып, терезе функциялары маалыматтарды топтун контекстинде талдоого мүмкүндүк берет, жеке саптардын деталдарын жоготпостон.