Sobes.tech
Junior — Middle

Ar turite patirties dirbant su SQL užklausomis naudojant lango funkcijas?

sobes.tech AI

Atsakymas iš AI

Taip, dirbdamas su SQL užklausomis, naudojausi lango funkcijomis (window functions). Jos leidžia atlikti skaičiavimus apie eilutes, susijusias su dabartine eilute, negrupuojant rezultatų, kas yra naudinga analizei ir sudėtingoms užklausoms.

Pagrindinės lango funkcijos:

  • ROW_NUMBER() — eilutės numeravimas lange
  • RANK(), DENSE_RANK() — reitingavimas atsižvelgiant į lygybes
  • SUM(), AVG(), COUNT() — agregatinės funkcijos lange

Pavyzdys: gauti darbuotojų sąrašą su jų atlyginimais ir eilės numeriu pagal skyrių mažėjimo tvarka:

SELECT
  employee_id,
  department_id,
  salary,
  ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS salary_rank
FROM employees;

Čia PARTITION BY skirsto duomenis pagal skyrius, o ORDER BY nustato tvarką kiekviename skyriuje. Langų funkcijos leidžia atlikti sudėtingas analitines užklausas be detalių praradimo.