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-ისგან, ფანჯრის ფუნქციები საშუალებას აძლევს მონაცემების ანალიზს ჯგუფის კონტექსტში, გარეშე დაკარგოს დეტალები ინდივიდუალური ხაზების შესახებ.