Sobes.tech
Middle

Kam paredzētas logs funkcijas SQL?

sobes.tech AI

Atbilde no AI

Logu funkcijas SQL veic datu agregāciju rindkopā, kas ir saistīta ar pašreizējo rindu, bet tajā pašā laikā nesagrupē rezultātu kopu. Tas ļauj veikt aprēķinus, piemēram, kumulatīvās summas, slīdošos vidējos vai reitingus, saglabājot visus sākotnējā vaicājuma rindas datus:

Galvenie logu funkciju mērķi:

  • Reitingēšana: katrai rindai piešķirt reitingu noteiktā logā:
-- Saņemt darbinieku reitingu pēc algas katrā nodaļā
SELECT
 employee_name,
 salary,
 department,
 RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
FROM
 employees;
  • Statistikas aprēķins bez grupēšanas: datu agregācija "logā", saglabājot rindu detalizāciju:
-- Aprēķināt vidējo algu visā nodaļā katrai rindai
SELECT
 employee_name,
 salary,
 department,
 AVG(salary) OVER (PARTITION BY department) as avg_department_salary
FROM
 employees;
  • Salīdzinājums ar pašreizējo rindu ar citām rindām logā: piekļuve datiem no iepriekšējām vai nākamajām rindām logā:
-- Saņemt iepriekšējā darbinieka algu pēc samazināšanas secības nodaļā
SELECT
 employee_name,
 salary,
 department,
 LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
FROM
 employees;
  • Kumulatīvie aprēķini: summas, vidējie un citi agregāti pieaugošā secībā:
-- Aprēķināt kumulatīvo pārdošanas summu pēc datuma
SELECT
 sale_date,
 amount,
 SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
FROM
 sales;

Atšķirībā no parastajām agregācijas funkcijām (GROUP BY), logu funkcijas nesaspiež rindas, padarot tās par jaudīgu rīku analītiskajiem vaicājumiem un datu detalizētai analīzei.