Sobes.tech
Middle

SQL-də pəncərə funksiyaları nə üçün istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

SQL-də pəncərə funksiyaları cari sətirlə əlaqəli sətirlər toplusunda məlumatların toplanmasını həyata keçirir, lakin nəticə toplusunu qruplaşdırmır. Bu, kümülatif cəm, hərəkətli orta və ya reytinq kimi hesablamaları həyata keçirməyə imkan verir və eyni zamanda orijinal sorğunun bütün sətirlərini saxlayır.

Pəncərə funksiyalarının əsas məqsədləri:

  • Reytinq: Müəyyən bir pəncərədə hər sətirə reytinq təyin etmək.
    -- Hər bir şöbə daxilində əməkdaşların maaşına görə reytinqini almaq
    SELECT
        employee_name,
        salary,
        department,
        RANK() OVER (PARTITION BY department ORDER BY salary DESC) as department_rank
    FROM
        employees;
    
  • Qruplaşdırmadan statistikaların hesablanması: Məlumatların "pəncərə" daxilində toplanması, satır səviyyəsində detallığın saxlanması.
    -- Hər bir sətir üçün şöbə üzrə orta maaşı hesablamaq
    SELECT
        employee_name,
        salary,
        department,
        AVG(salary) OVER (PARTITION BY department) as avg_department_salary
    FROM
        employees;
    
  • Cari sətiri digər sətirlərlə müqayisə etmək: Pəncərə daxilində əvvəlki və ya növbəti sətirlərə giriş.
    -- Maaşına görə azalan sırayla şöbədəki əvvəlki əməkdaşın maaşını almaq
    SELECT
        employee_name,
        salary,
        department,
        LAG(salary, 1, 0) OVER (PARTITION BY department ORDER BY salary DESC) as previous_salary
    FROM
        employees;
    
  • Yığım ilə hesablamalar: Yığma, orta və digər agregasiyaların artan yığımda hesablanması.
    -- Satışların tarixə görə yığımını hesablamaq
    SELECT
        sale_date,
        amount,
        SUM(amount) OVER (ORDER BY sale_date) as cumulative_sales
    FROM
        sales;
    

Ənənəvi agregasiya funksiyalarından (GROUP BY) fərqli olaraq, pəncərə funksiyaları sətirləri birləşdirmir, bu da onları analitik sorğular və detallı məlumat analizi üçün güclü alətə çevirir.