SQL-ში ფანჯრის ფუნქციისა და აგრეგირების ფუნქციის შორის რა განსხვავებაა?
sobes.tech AI
პასუხი AI-სგან
SQL-ში აგრეგატული ფუნქციები (მაგალითად, SUM, AVG, COUNT) ითვლის ერთ საბოლოო მნიშვნელობას სვეტების ჯგუფისთვის და აბრუნებს ერთ სვეტს თითოეულ ჯგუფზე. მაგალითად, SUM(salary) ითვლის ხელფასების ჯამს მთელი ჯგუფისთვის.
ფანჯრის ფუნქცია (window function) ასევე მუშაობს სვეტების ჯგუფებთან, მაგრამ აბრუნებს შედეგს თითოეულ სვეტზე, განიხილავს ფანჯრის კონტექსტს (სვეტების ნაკრები, რომელიც გარშემორტყმულია მიმდინარე სვეტთან). მაგალითად, SUM(salary) OVER (PARTITION BY department) დააბრუნებს ხელფასების ჯამს განყოფილებისთვის თითოეულ სვეტზე, არამხოლოდ ერთ სვეტად აქცევას GROUP BY-თან ერთად.
მაგალითი:
SELECT employee_id, department, salary,
SUM(salary) OVER (PARTITION BY department) AS dept_salary_sum
FROM employees;
აქ თითოეულ სვეტზე გამოითვლება ხელფასების ჯამი განყოფილებაში, არა ერთი სვეტით განყოფილებისთვის, როგორც აგრეგატული ფუნქციის გამოყენებისას GROUP BY-თან ერთად.