GROUP BY
klausa dalam SQL digunakan untuk mengumpulkan baris yang mempunyai nilai yang sama dalam lajur yang ditentukan ke dalam baris ringkasan, seperti "Cari bilangan pelanggan di setiap negara". Ia sering digunakan dengan fungsi agregat (seperti Count, Max, Min, Sum, AVG) untuk melakukan pengiraan pada setiap kumpulan data.
Untuk menggunakan GROUP BY
, anda biasanya menyusun pertanyaan SQL anda seperti berikut:
<code class="sql">SELECT column_name(s), aggregate_function(column_name) FROM table_name WHERE condition GROUP BY column_name(s) ORDER BY column_name(s);</code>
Sebagai contoh, jika anda mempunyai jadual bernama Orders
dengan lajur CustomerID
, OrderDate
, dan OrderAmount
, dan anda ingin mencari jumlah jumlah pesanan bagi setiap pelanggan, anda akan menggunakan:
<code class="sql">SELECT CustomerID, SUM(OrderAmount) AS TotalOrderAmount FROM Orders GROUP BY CustomerID;</code>
Pertanyaan ini memaparkan jadual Orders
oleh CustomerID
dan mengira jumlah OrderAmount
untuk setiap pelanggan.
Fungsi agregat dalam SQL melakukan pengiraan pada satu set nilai dan mengembalikan satu nilai. Mereka biasanya digunakan dengan GROUP BY
klausa untuk meringkaskan data dalam setiap kumpulan. Berikut adalah beberapa fungsi agregat biasa:
COUNT(CustomerID)
akan mengira bilangan pelanggan.SUM(OrderAmount)
akan mengira jumlah jumlah pesanan.AVG(OrderAmount)
akan mengira jumlah pesanan purata.MIN(OrderAmount)
akan mendapati jumlah pesanan terkecil.MAX(OrderAmount)
akan mendapati jumlah pesanan terbesar. Fungsi -fungsi ini boleh digabungkan dalam pelbagai cara dengan GROUP BY
dengan menghasilkan laporan dan ringkasan yang berwawasan.
Ya, GROUP BY
boleh digunakan dengan pelbagai lajur dalam SQL. Apabila anda berkumpul dengan pelbagai lajur, hasilnya dikelompokkan oleh gabungan nilai -nilai dalam lajur tersebut. Ini membolehkan analisis data yang lebih terperinci.
Sintaks untuk pengelompokan oleh pelbagai lajur hanya menyenaraikan lajur dalam GROUP BY
klausa, dipisahkan oleh koma:
<code class="sql">SELECT column1, column2, aggregate_function(column3) FROM table_name GROUP BY column1, column2;</code>
Sebagai contoh, jika anda ingin mencari jumlah jumlah pesanan setiap pelanggan setiap tahun, anda mungkin menggunakan:
<code class="sql">SELECT CustomerID, YEAR(OrderDate) AS OrderYear, SUM(OrderAmount) AS TotalOrderAmount FROM Orders GROUP BY CustomerID, YEAR(OrderDate);</code>
Kumpulan pertanyaan ini Jadual Orders
oleh CustomerID
dan Tahun OrderDate
, mengira jumlah jumlah pesanan bagi setiap kombinasi unik pelanggan dan tahun.
Klausa HAVING
digunakan dalam kombinasi dengan GROUP BY
klausa untuk menapis kumpulan berdasarkan keadaan yang ditentukan. Walaupun klausa WHERE
menapis baris individu sebelum pengagregatan berlaku, klausa HAVING
penapis data yang dikelompokkan selepas pengagregatan telah berlaku.
Struktur tipikal pertanyaan menggunakan kedua -dua GROUP BY
dan HAVING
adalah seperti berikut:
<code class="sql">SELECT column_name(s), aggregate_function(column_name) FROM table_name WHERE condition GROUP BY column_name(s) HAVING condition ORDER BY column_name(s);</code>
Sebagai contoh, jika anda ingin mencari jumlah jumlah pesanan bagi setiap pelanggan, tetapi hanya termasuk pelanggan dengan jumlah pesanan yang lebih besar daripada 1000, anda akan menggunakan:
<code class="sql">SELECT CustomerID, SUM(OrderAmount) AS TotalOrderAmount FROM Orders GROUP BY CustomerID HAVING SUM(OrderAmount) > 1000;</code>
Dalam pertanyaan ini, GROUP BY
klausa kumpulan perintah oleh CustomerID
dan mengira jumlah jumlah pesanan bagi setiap pelanggan. Klausa HAVING
kemudian menapis keputusan untuk memasukkan hanya kumpulan (pelanggan) di mana jumlah jumlah pesanan lebih besar daripada 1000.
Atas ialah kandungan terperinci Bagaimanakah saya menggunakan Klausa Kumpulan dalam SQL untuk Kumpulan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!