Middle
Kam skirta lango funkcijos SQL?
sobes.tech AI
Atsakymas iš AI
Langelių funkcijos SQL vykdo duomenų agregavimą eilučių rinkinyje, susijusiame su dabartine eilute, tačiau tuo pačiu metu nesugrupuojant rezultatų rinkinio. Tai leidžia atlikti skaičiavimus, tokius kaip kumuliaciniai sumos, slankieji vidurkiai ar reitingavimas, išlaikant visus pradinio užklausos eilučių duomenis:
Pagrindiniai langelių funkcijų tikslai:
- Reitingavimas: kiekvienai eilutei priskirti reitingą tam tikrame lange:
-- Gauti darbuotojų reitingą pagal atlyginimą kiekviename skyriuje
SELECT
employee_name,
salary,
department,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
FROM
employees;
- Statistikos skaičiavimas be grupavimo: duomenų agregavimas "lange", išlaikant eilutės detalumą:
-- Apskaičiuoti vidutinį atlyginimą visame skyriuje kiekvienai eilutei
SELECT
employee_name,
salary,
department,
AVG(salary) OVER (PARTITION BY department) as avg_department_salary
FROM
employees;
- Palyginimas su dabartine eilute kitomis eilutėmis lange: prieiga prie duomenų iš ankstesnių ar vėlesnių eilučių lange:
-- Gauti ankstesnio darbuotojo atlyginimą pagal sumažėjantį atlyginimą skyriuje
SELECT
employee_name,
salary,
department,
LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
FROM
employees;
- Kumulatyviniai skaičiavimai: sumos, vidurkiai ir kiti agregavimai didėjimo tvarka:
-- Apskaičiuoti kumuliacinę pardavimų sumą pagal datą
SELECT
sale_date,
amount,
SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
FROM
sales;
Skirtingai nuo įprastų agregavimo funkcijų (GROUP BY), langelių funkcijos nesuspaudžia eilučių, todėl jos yra galingas įrankis analitinėms užklausoms ir duomenų detaliam analizei.