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

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

DDD
Lepaskan: 2025-01-06 06:12:39
asal
927 orang telah melayarinya

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

Memahami Perbezaan Antara PARTITION BY dan GROUP BY

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

  1. Skop: GROUP BY mempengaruhi keseluruhan hasil pertanyaan, mengumpulkan dan mengagregatkan semua baris yang mematuhi yang ditentukan kriteria. PARTITION BY, sebaliknya, terhad kepada fungsi tetingkap, membahagikan data hanya dalam julat tetingkap yang ditentukan.
  2. Kesan pada Kiraan Baris: GROUP BY biasanya mengurangkan bilangan baris output sebagai ia menggabungkan nilai pendua. Sebaliknya, PARTITION BY tidak mengubah kiraan baris sebaliknya mengubah suai hasil pengiraan fungsi tetingkap.

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

Output:

CustomerID OrderCount
1 2
2 2

Menggunakan PARTITION BY:

SELECT ROW_NUMBER() OVER (PARTITION BY CustomerID ORDER BY OrderID) AS OrderNumberForRow
FROM Orders
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan