Middle
Zašto se koriste funkcije prozora u SQL-u?
sobes.tech АИ
Одговор од АИ
Funkcije prozora u SQL-u vrše agregaciju podataka u skupu redova povezanih sa trenutnim redom, ali ne grupišu skup rezultata. Ovo omogućava izvođenje kalkulacija kao što su kumulativne sume, pokretni prosek ili rangiranje, zadržavajući sve redove izvornog upita.
Glavni ciljevi korišćenja funkcija prozora:
- Rangiranje: Dodeljivanje ranga svakom redu u određenom prozoru.
-- Dobijanje ranga zaposlenih po plati unutar svakog odeljenja SELECT employee_name, salary, department, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank FROM employees; - Izračun statistika po grupama redova bez grupisanja: Agregacija podataka unutar "prozora" redova, zadržavajući detalj na nivou reda.
-- Izračun prosečne plate za celo odeljenje za svaki red SELECT employee_name, salary, department, AVG(salary) OVER (PARTITION BY department) as avg_department_salary FROM employees; - Upoređenje trenutnog reda sa drugim redovima u prozoru: Pristup podacima iz prethodnih ili narednih redova u prozoru.
-- Dobijanje plate prethodnog zaposlenog u odeljenju u opadajućem redosledu po plati SELECT employee_name, salary, department, LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary FROM employees; - Izračuni sa kumulativnim zbirom: Izračun suma, proseka i drugih agregata u rastućem kumulativnom obliku.
-- Izračun kumulativne sume prodaja po datumu SELECT sale_date, amount, SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales FROM sales;
Za razliku od običnih funkcija agregacije (GROUP BY), funkcije prozora ne spajaju redove, što ih čini moćnim alatom za analitičke upite i detaljnu analizu podataka.