GROUP BY, binaan SQL yang biasa digunakan, memudahkan pengumpulan baris data berdasarkan nilai biasa, membolehkan penilaian agregat fungsi pada baris terkumpul ini. Walau bagaimanapun, kemunculan PARTITION BY dalam operasi pangkalan data telah menimbulkan persoalan tentang perbezaan antara kedua-dua operasi ini.
Ikhtisar GROUP BY
GROUP BY kumpulan berkongsi rekod data yang serupa nilai dalam lajur yang ditentukan, meruntuhkannya ke dalam kumpulan yang berbeza. Fungsi agregat seterusnya (cth., SUM(), COUNT()) kemudiannya dikira untuk setiap kumpulan. Tujuan utama GROUP BY adalah untuk meringkaskan dan memekatkan set data yang besar.
Pembahagian dengan PARTITION BY
Tidak seperti GROUP BY, PARTITION BY beroperasi dalam konteks fungsi tetingkap. Fungsi ini menilai baris data dalam julat (atau "tetingkap") yang ditakrifkan oleh syarat tertentu. PARTITION BY membahagikan data bertingkap kepada partition berdasarkan nilai lajur yang ditentukan. Fungsi tetingkap kemudiannya digunakan secara berasingan pada setiap partition, membolehkan pengiraan yang lebih berbutir dan bernuansa.
Perbezaan Utama
Contoh
Pertimbangkan jadual pesanan:
CustomerID | OrderID |
---|---|
1 | 10 |
1 | 15 |
2 | 20 |
2 | 25 |
Menggunakan GROUP OLEH:
SELECT CustomerID, COUNT(*) AS OrderCount FROM Orders GROUP BY CustomerID
Output:
CustomerID | OrderCount |
---|---|
1 | 2 |
2 | 2 |
Menggunakan PARTITION BY:
SELECT ROW_NUMBER() OVER (PARTITION BY CustomerID ORDER BY OrderID) AS OrderNumberForRow FROM Orders
Output:
CustomerID | OrderID | OrderNumberForRow |
---|---|---|
1 | 10 | 1 |
1 | 15 | 2 |
2 | 20 | 1 |
2 | 25 | 2 |
Dalam contoh ini, PARTITION BY mengasingkan data mengikut CustomerID dan menetapkan nombor baris berturut-turut dalam setiap partition.
Ringkasnya, PARTITION BY menyediakan fleksibiliti tambahan dalam pengiraan fungsi tetingkap, data pembahagian untuk penilaian yang lebih disasarkan. GROUP BY, sebaliknya, menawarkan pengagregatan global dan pengurangan baris untuk ringkasan data yang ringkas. Memahami perbezaan antara operasi ini adalah penting untuk mengoptimumkan kod SQL dan memaksimumkan kecekapan pertanyaan.
Atas ialah kandungan terperinci GROUP BY vs. PARTITION BY: Apakah Perbezaan dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!