Rumah > pangkalan data > tutorial mysql > PARTITION BY vs. GROUP BY: Apakah Perbezaan dalam Pertanyaan SQL?

PARTITION BY vs. GROUP BY: Apakah Perbezaan dalam Pertanyaan SQL?

Mary-Kate Olsen
Lepaskan: 2025-01-06 03:53:42
asal
603 orang telah melayarinya

PARTITION BY vs. GROUP BY: What's the Difference in SQL Queries?

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan