Rumah >pangkalan data >SQL >Bagaimanakah saya menggunakan Klausa Kumpulan dalam SQL untuk Kumpulan Data?

Bagaimanakah saya menggunakan Klausa Kumpulan dalam SQL untuk Kumpulan Data?

Karen Carpenter
Karen Carpenterasal
2025-03-13 13:51:31392semak imbas

Bagaimanakah saya menggunakan Klausa Kumpulan dalam SQL untuk Kumpulan Data?

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.

Apakah beberapa fungsi agregat biasa yang digunakan dengan kumpulan oleh SQL?

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:

  • Kiraan () : Mengira bilangan baris dalam kumpulan. Sebagai contoh, COUNT(CustomerID) akan mengira bilangan pelanggan.
  • SUM () : Mengira jumlah set nilai. Sebagai contoh, SUM(OrderAmount) akan mengira jumlah jumlah pesanan.
  • Avg () : Mengira purata satu set nilai. Sebagai contoh, AVG(OrderAmount) akan mengira jumlah pesanan purata.
  • Min () : Mengembalikan nilai terkecil dalam satu set nilai. Sebagai contoh, MIN(OrderAmount) akan mendapati jumlah pesanan terkecil.
  • Max () : Mengembalikan nilai terbesar dalam satu set nilai. Sebagai contoh, 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.

Bolehkah kumpulan dengan digunakan dengan pelbagai lajur dalam SQL, dan jika ya, bagaimana?

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.

Bagaimanakah klausa yang berfungsi bersempena dengan kumpulan oleh SQL?

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!

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