Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Tutorial data:Menggunakan Fungsi Jendela

Apa itu Fungsi Jendela?

Fungsi jendela memungkinkan pengguna untuk melakukan perhitungan terhadap partisi (yaitu subkelompok atau bagian) dari kumpulan hasil, biasanya tabel atau hasil dari kueri lain. Tidak seperti fungsi agregasi tradisional, yang hanya mengembalikan satu nilai untuk setiap grup yang ditentukan dalam kueri, fungsi jendela mengembalikan satu nilai untuk setiap baris input.

Bagaimana fungsi jendela membantu?

Fungsi jendela meningkatkan efisiensi dan mengurangi kerumitan kueri yang menganalisis partisi (jendela) kumpulan data dengan menyediakan alternatif untuk konsep SQL yang lebih kompleks, mis. kueri turunan. Kasus penggunaan umum meliputi:

  • Hasil pemeringkatan dalam jendela tertentu (misalnya peringkat per grup)
  • Mengakses data dari baris lain di jendela tertentu (mis. pelaporan periode-ke-periode)
  • Agregasi dalam jendela tertentu (misalnya total berjalan):

Cara menggunakan Fungsi Jendela

Fungsi jendela dimulai dengan OVER klausa, dan dikonfigurasi menggunakan tiga konsep:

  • partisi jendela (PARTITION BY ) - mengelompokkan baris ke dalam partisi
  • pemesanan jendela (ORDER BY ) - menentukan urutan atau urutan baris dalam setiap jendela
  • bingkai jendela (ROWS ) - mendefinisikan jendela dengan menggunakan offset dari baris yang ditentukan

Ikhtisar Sintaks

function (expression) OVER
     ( [ PARTITION BY expression_list ]
       [ ORDER BY order_list ]
       [ ROWS frame_clause ])

Definisi

  • expression_list:daftar ekspresi yang dipisahkan koma, biasanya nama kolom
  • order_list:daftar ekspresi yang dipisahkan koma, biasanya nama kolom
  • frame_clause:tentukan offset menggunakan CURRENT ROW , _value_ PRECEDING , UNBOUNDED PRECEDING , _value_ FOLLOWING , UNBOUNDED FOLLOWING

Contoh

Peringkat:peringkat per-grup

SELECT
      campaign
    , month
    , total_cost
    , rank() OVER (PARTITION BY month ORDER BY month DESC, total_cost DESC) as "rank"
FROM Cost_by_Month
LIMIT 8

Baris Sebelumnya:analisis periode-ke-periode

SELECT
      campaign
    , month
    , total_cost
    , LAG(total_cost, 1) OVER (ORDER BY campaign, month) as "previous total cost"
FROM Cost_by_Month
WHERE campaign = 'TV'
LIMIT 4

Agregasi Dalam Jendela:total berjalan

SELECT
    campaign, month, monthly_cost
  , sum(monthly_cost) OVER (PARTITION BY campaign ORDER BY month ROWS BETWEEN UNBOUNDED
    PRECEDING and CURRENT ROW) as "running cost total"
FROM Cost_by_Month

Dokumentasi &Daftar Fungsi:

Harap dicatat bahwa perbedaan halus dalam penggunaan dan sintaks ada dari database ke database. Untuk informasi khusus untuk penerapan Anda, harap gunakan dokumentasi khusus sumber yang disediakan di bawah ini.

Postgres

  • Tutorial
  • Fungsi

Pergeseran merah

  • Tutorial
  • Fungsi

Oracle

  • Tutorial

SQLServer

  • Tutorial

BigQuery

  • Tutorial

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berbagai Cara untuk Menghapus Duplikat dari Tabel SQL

  2. Penemuan dan Klasifikasi Data SQL

  3. Cara Membaca dan Menafsirkan Kesalahan SQL

  4. Praktik Terbaik untuk Desain Basis Data Multi-Bahasa

  5. Beverly Hills 90210 dan ZIP+4:Menangani Alamat dalam Model Data