Rumah >pangkalan data >tutorial mysql >KUMPULAN OLEH lwn. PARTITION OLEH: Apakah Perbezaan Utama dalam Pertanyaan Agregat?

KUMPULAN OLEH lwn. PARTITION OLEH: Apakah Perbezaan Utama dalam Pertanyaan Agregat?

Susan Sarandon
Susan Sarandonasal
2025-01-06 02:02:40636semak imbas

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

Membezakan PARTITION BY daripada GROUP BY

Apabila bekerja dengan pertanyaan agregat, GROUP BY telah lama menjadi pilihan yang biasa untuk mengumpul data. Namun, kemunculan PARTITION BY telah memperkenalkan konsep serupa yang menimbulkan persoalan tentang hubungannya dengan GROUP BY.

Memahami Peranan GROUP BY

GROUP BY beroperasi di tahap pertanyaan, mengubah keseluruhan hasil pertanyaan. Dengan mengumpulkan baris berdasarkan lajur tertentu, ia memekatkan data, mengira nilai agregat (cth., kiraan, purata, jumlah) untuk setiap kumpulan. Contohnya:

select customerId, count(*) as orderCount
from Orders
group by customerId

PARTITION BY: Perspektif Berbeza

Tidak seperti GROUP BY, PARTITION BY dikaitkan dengan fungsi tetingkap, seperti ROW_NUMBER(). Ia beroperasi dalam skop pengiraan tetingkap, mengubah suai cara fungsi ini mengira keputusannya. Pertimbangkan contoh berikut:

select row_number() over (partition by customerId order by orderId)
    as OrderNumberForThisCustomer
from Orders

Perbezaan Utama yang Perlu Diperhatikan

  • Skop Kesan: GROUP BY mempengaruhi keseluruhan hasil pertanyaan , mengurangkan bilangan baris dengan menyatukan data, manakala PARTITION BY beroperasi hanya dalam fungsi tetingkap, tanpa mengubah bilangan baris output.
  • Agregat lwn. Bukan Agregat: GROUP BY memudahkan pengiraan agregat untuk data terkumpul, manakala PARTITION BY tidak melakukan sebarang operasi agregat.
  • Fungsi Tetingkap Pengubahsuaian: PARTITION BY mengubah suai gelagat fungsi tetingkap dengan menunjukkan cara pengiraan harus dilakukan dalam setiap partition.

Atas ialah kandungan terperinci KUMPULAN OLEH lwn. PARTITION OLEH: Apakah Perbezaan Utama dalam Pertanyaan Agregat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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