Pertanyaan Pembahagian: Memahami PARTITION BY lwn. GROUP BY
Dalam bidang pengagregatan data, pertanyaan pangkalan data sering bergantung pada klausa GROUP BY untuk memanipulasi dan mengagregat data. Baru-baru ini, teknik alternatif, PARTITION BY, telah menarik perhatian pembangun yang mencari prestasi pertanyaan yang dioptimumkan. Tetapi bagaimanakah kedua-dua fasal ini berbeza?
PARTITION BY, tidak seperti GROUP BY, beroperasi dalam konteks fungsi tetingkap, seperti ROW_NUMBER(). Tujuan utamanya ialah untuk membahagikan data kepada subset berdasarkan kriteria tertentu, membolehkan pengiraan nilai dalam setiap subset, sama seperti tetingkap yang meluncur melalui set data.
Sebaliknya, GROUP BY mengubah suai keseluruhan pertanyaan, membolehkan pengagregatan data merentas baris dengan nilai yang serupa. Ia mengurangkan bilangan baris yang dikembalikan dengan menggabungkannya dan mengira nilai agregat, seperti purata atau jumlah.
Untuk menggambarkan perbezaan, pertimbangkan contoh berikut:
Menggunakan GROUP BY:
SELECT customerId, COUNT(*) AS orderCount FROM Orders GROUP BY customerId;
Pertanyaan ini mengumpulkan pesanan mengikut ID pelanggan dan kiraan bilangan pesanan untuk setiap pelanggan, mengurangkan bilangan baris yang dikembalikan.
Menggunakan PARTITION BY:
SELECT ROW_NUMBER() OVER (PARTITION BY customerId ORDER BY orderId) AS OrderNumberForThisCustomer FROM Orders;
Pertanyaan ini mengira nombor pesanan untuk setiap pesanan dalam setiap partition pelanggan, membenarkan kedudukan pesanan untuk setiap pelanggan. Ia tidak menjejaskan bilangan baris yang dikembalikan.
Ringkasnya, sementara kedua-dua PARTITION BY dan GROUP BY mempunyai tujuan yang berbeza, mereka berkongsi matlamat yang sama iaitu manipulasi dan pengagregatan data. GROUP BY beroperasi secara global pada pertanyaan, mengurangkan bilangan baris yang dikembalikan, manakala PARTITION BY berfungsi dalam skop fungsi tetingkap dan tidak mengubah bilangan baris. Memahami perbezaan antara klausa ini memberi kuasa kepada pembangun untuk menyesuaikan pertanyaan mereka kepada manipulasi data tertentu dan meningkatkan prestasi pertanyaan.
Atas ialah kandungan terperinci PARTITION BY vs. GROUP BY: Apakah Perbezaan dalam Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!