Sobes.tech
Middle

SQLде терезе функциялары эмне үчүн колдонулат?

sobes.tech AI

AIден жооп

SQL-деги терезе функциялары — бул сапталган саптардын топтомундагы маалыматтарды топтоо, бирок натыйжалар топтомун топтоштурбайт. Бул эсептөөлөргө кумулятивдүү суммалар, айрым орто эсептер же ранжирлөө кирет, ал эми бардык баштапкы суроо саптары сакталат:

Терезе функцияларынын негизги максаттары:

  • Ранжирлөө: Ар бир сапка белгилүү бир терезеде ранг берүү:
-- Ар бир бөлүмдүн ичинде кызматкерлердин айлык маянасына карата рангын алуу
SELECT
 employee_name,
 salary,
 department,
 RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
FROM
 employees;
  • Группировкасыз статистикаларды эсептөө: Маалыматты "терезе" ичинде топтоо, бирок саптардын деталдуулугун сактоо:
-- Ар бир сап үчүн бөлүм боюнча орто маянаны эсептөө
SELECT
 employee_name,
 salary,
 department,
 AVG(salary) OVER (PARTITION BY department) as avg_department_salary
FROM
 employees;
  • Учурдагы сапты башка саптар менен салыштыруу: Терезедеги мурдагы же кийинки саптардын маалыматтарына жетүү:
-- Айлык маянасы төмөндөп жаткан бөлүмдөгү мурунку кызматчынын маянасын алуу
SELECT
 employee_name,
 salary,
 department,
 LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
FROM
 employees;
  • Жыйынды эсептөөлөр: Жыйынтык суммалар, орточолор жана башка топтоо эсептөөлөрү:
-- Сатуулардын кумулятивдүү суммасын датасы боюнча эсептөө
SELECT
 sale_date,
 amount,
 SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
FROM
 sales;

Генералдуу топтоо функцияларынан айырмаланып, терезе функциялары саптарды кысуусуз калтырып, аналитикалык суроолор жана деталдуу маалыматтарды талдоо үчүн күчтүү инструмент болуп саналат.