Sobes.tech
Middle

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 менен колдонулган агрегаттык функция сыяктуу.