Sobes.tech
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.