Window functions di MySQL memungkinkan Anda melakukan operasi perhitungan di atas sekumpulan baris yang terkait dengan query, tetapi tetap mempertahankan hasil baris individu. Ini sangat berguna untuk tugas-tugas seperti penghitungan agregat, perankingan, atau operasi yang memerlukan konteks antar baris.
Jenis-jenis Window Function di MySQL:
1. **ROW_NUMBER()**: Memberikan nomor urut unik untuk setiap baris dalam hasil set query.
```sql
SELECT nama, nilai, ROW_NUMBER() OVER (ORDER BY nilai DESC) AS ranking
FROM siswa;
```
2. **RANK()**: Memberikan ranking pada setiap baris dalam partisi, dengan nilai yang sama menerima ranking yang sama.
```sql
SELECT nama, nilai, RANK() OVER (ORDER BY nilai DESC) AS ranking
FROM siswa;
```
3. **DENSE_RANK()**: Mirip dengan `RANK()`, tetapi tidak melewatkan angka peringkat jika ada nilai yang sama.
```sql
SELECT nama, nilai, DENSE_RANK() OVER (ORDER BY nilai DESC) AS ranking
FROM siswa;
```
4. **NTILE(n)**: Membagi hasil set ke dalam `n` bagian yang kira-kira sama, dan memberikan nomor bucket untuk setiap baris.
```sql
SELECT nama, nilai, NTILE(4) OVER (ORDER BY nilai DESC) AS kuartil
FROM siswa;
```
5. **LAG()**: Mengakses nilai dari baris sebelumnya dalam partisi.
```sql
SELECT nama, nilai, LAG(nilai, 1) OVER (ORDER BY nilai) AS nilai_sebelumnya
FROM siswa;
```
6. **LEAD()**: Mengakses nilai dari baris berikutnya dalam partisi.
```sql
SELECT nama, nilai, LEAD(nilai, 1) OVER (ORDER BY nilai) AS nilai_selanjutnya
FROM siswa;
```
7. **FIRST_VALUE()**: Mengembalikan nilai pertama dalam partisi.
```sql
SELECT nama, nilai, FIRST_VALUE(nilai) OVER (ORDER BY nilai) AS nilai_pertama
FROM siswa;
```
8. **LAST_VALUE()**: Mengembalikan nilai terakhir dalam partisi.
```sql
SELECT nama, nilai, LAST_VALUE(nilai) OVER (ORDER BY nilai) AS nilai_terakhir
FROM siswa;
```
Contoh Penggunaan:
Misalkan Anda ingin menghitung rata-rata nilai siswa dan menunjukkan peringkat mereka berdasarkan nilai tersebut:
```sql
SELECT
nama,
nilai,
AVG(nilai) OVER () AS rata_rata_nilai,
RANK() OVER (ORDER BY nilai DESC) AS ranking
FROM siswa;
```
Window functions ini biasanya digunakan bersama klausa `OVER` yang menentukan partisi (seperti `PARTITION BY`), urutan (`ORDER BY`), dan jendela perhitungan lainnya.
Nesta página do site você pode assistir ao vídeo on-line SQL Lanjutan - WINDOW FUNCTION SQL DI MYSQL duração hora minuto segundo em boa qualidade , que foi baixado pelo usuário RhanTech 01 Janeiro 1970, compartilhe o link com seus amigos e conhecidos, no youtube este vídeo já foi visto 36 vezes e gostou 1 espectadores. Boa visualização!