Kita dapat mengambil contoh sederhana.
Pertimbangkan sebuah tabel bernama TableA
dengan nilai berikut:
id firstname lastname Mark
-------------------------------------------------------------------
1 arun prasanth 40
2 ann antony 45
3 sruthy abc 41
6 new abc 47
1 arun prasanth 45
1 arun prasanth 49
2 ann antony 49
GROUP BY
Klausa SQL GROUP BY dapat digunakan dalam pernyataan SELECT untuk mengumpulkan data di beberapa rekaman dan mengelompokkan hasil dengan satu atau beberapa kolom.
Dengan kata yang lebih sederhana, pernyataan GROUP BY digunakan bersama dengan fungsi agregat untuk mengelompokkan hasil yang ditetapkan oleh satu atau beberapa kolom.
Sintaksis:
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
WHERE conditions
GROUP BY expression1, expression2, ... expression_n;
Kita dapat mendaftar GROUP BY
di tabel kami:
select SUM(Mark)marksum,firstname from TableA
group by id,firstName
Hasil:
marksum firstname
----------------
94 ann
134 arun
47 new
41 sruthy
Dalam tabel asli kami, kami memiliki 7 baris dan ketika kami menerapkan GROUP BY id
, server mengelompokkan hasil berdasarkan id
:
Dengan kata sederhana:
di sini GROUP BY
biasanya mengurangi jumlah baris yang dikembalikan dengan menggulung dan menghitung Sum()
untuk setiap baris.
PARTITION BY
Sebelum pergi ke PARTITION OLEH, mari kita lihat OVER
klausa:
Menurut definisi MSDN:
Klausa OVER mendefinisikan jendela atau kumpulan baris yang ditentukan pengguna dalam kumpulan hasil kueri. Fungsi jendela kemudian menghitung nilai untuk setiap baris di jendela. Anda dapat menggunakan klausa OVER dengan fungsi untuk menghitung nilai agregat seperti rata-rata bergerak, agregat kumulatif, total berjalan, atau hasil N teratas per grup.
PARTITION BY tidak akan mengurangi jumlah baris yang dikembalikan.
Kita dapat menerapkan PARTITION BY dalam contoh tabel kita:
SELECT SUM(Mark) OVER (PARTITION BY id) AS marksum, firstname FROM TableA
Hasil:
marksum firstname
-------------------
134 arun
134 arun
134 arun
94 ann
94 ann
41 sruthy
47 new
Lihatlah hasilnya - ini akan mempartisi baris dan mengembalikan semua baris, tidak seperti GROUP BY.