Rumah > pangkalan data > tutorial mysql > Bagaimana anda mengumpulkan data menggunakan Kumpulan mengikut klausa?

Bagaimana anda mengumpulkan data menggunakan Kumpulan mengikut klausa?

Johnathan Smith
Lepaskan: 2025-03-19 13:25:31
asal
287 orang telah melayarinya

Bagaimana anda mengumpulkan data menggunakan Kumpulan dengan klausa?

Kumpulan oleh klausa dalam SQL digunakan untuk mengumpulkan baris yang mempunyai nilai yang sama dalam lajur yang ditentukan ke dalam baris ringkasan. Ia biasanya digunakan dengan fungsi agregat (seperti Count, Max, Min, Sum, AVG) untuk melakukan pengiraan pada setiap kumpulan data. Berikut adalah cara anda boleh menggunakan Kumpulan dengan klausa:

  1. Sintaks Asas : Sintaks asas kumpulan dengan pertanyaan adalah:

     <code class="sql">SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1;</code>
    Salin selepas log masuk

    Dalam contoh ini, column1 digunakan untuk mengumpulkan data, dan aggregate_function(column2) digunakan untuk setiap kumpulan.

  2. Contoh : Katakan anda mempunyai jadual yang dipanggil sales dengan region lajur dan amount . Anda ingin mencari jumlah jualan bagi setiap rantau. Pertanyaannya adalah:

     <code class="sql">SELECT region, SUM(amount) as total_sales FROM sales GROUP BY region;</code>
    Salin selepas log masuk
    Salin selepas log masuk

    Pertanyaan ini kumpulan data oleh lajur region dan mengira jumlah amount bagi setiap kumpulan.

  3. Lajur Pelbagai : Anda boleh berkumpul dengan pelbagai lajur dengan menyenaraikannya dalam Kumpulan mengikut klausa, dipisahkan oleh koma. Contohnya:

     <code class="sql">SELECT region, product, SUM(amount) as total_sales FROM sales GROUP BY region, product;</code>
    Salin selepas log masuk

    Pertanyaan ini akan mengumpulkan data oleh kedua -dua region dan product , dan mengira jumlah amount untuk setiap kombinasi unik region dan product .

Apakah fungsi biasa yang digunakan dengan kumpulan untuk mengagregatkan data?

Apabila menggunakan Klausa Kumpulan, beberapa fungsi agregat biasa digunakan untuk melakukan pengiraan pada data yang dikelompokkan. Fungsi ini termasuk:

  1. Kiraan () : Mengira bilangan baris dalam setiap kumpulan. Contohnya:

     <code class="sql">SELECT region, COUNT(*) as number_of_sales FROM sales GROUP BY region;</code>
    Salin selepas log masuk
  2. SUM () : Mengira jumlah lajur angka dalam setiap kumpulan. Contohnya:

     <code class="sql">SELECT region, SUM(amount) as total_sales FROM sales GROUP BY region;</code>
    Salin selepas log masuk
    Salin selepas log masuk
  3. Avg () : Mengira purata lajur angka dalam setiap kumpulan. Contohnya:

     <code class="sql">SELECT region, AVG(amount) as average_sale FROM sales GROUP BY region;</code>
    Salin selepas log masuk
  4. Max () : Cari nilai maksimum lajur dalam setiap kumpulan. Contohnya:

     <code class="sql">SELECT region, MAX(amount) as max_sale FROM sales GROUP BY region;</code>
    Salin selepas log masuk
  5. Min () : Cari nilai minimum lajur dalam setiap kumpulan. Contohnya:

     <code class="sql">SELECT region, MIN(amount) as min_sale FROM sales GROUP BY region;</code>
    Salin selepas log masuk

Fungsi -fungsi ini membolehkan anda meringkaskan data dalam pelbagai cara, memberikan gambaran mengenai data yang dikumpulkan.

Bagaimanakah kumpulan boleh digabungkan dengan perlu menapis hasil yang dikelompokkan?

Klausa yang mempunyai digunakan bersempena dengan kumpulan dengan klausa untuk menapis hasil yang dikelompokkan berdasarkan keadaan. Tidak seperti klausa WHERE, yang menapis baris sebelum kumpulan, kumpulan penapis klausa selepas mereka telah diwujudkan. Inilah cara anda boleh menggunakannya bersama:

  1. Sintaks Asas : Sintaks kumpulan gabungan pertanyaan oleh dan mempunyai:

     <code class="sql">SELECT column1, aggregate_function(column2) FROM table_name GROUP BY column1 HAVING condition;</code>
    Salin selepas log masuk
  2. Contoh : Katakan anda ingin mencari kawasan dengan jumlah jualan lebih daripada $ 10,000 dari jadual sales . Pertanyaannya adalah:

     <code class="sql">SELECT region, SUM(amount) as total_sales FROM sales GROUP BY region HAVING SUM(amount) > 10000;</code>
    Salin selepas log masuk

    Pertanyaan ini pertama kumpulan data mengikut region , mengira jumlah jualan untuk setiap rantau, dan kemudian menapis hasilnya untuk memasukkan hanya kawasan -kawasan di mana jumlah jualan melebihi $ 10,000.

  3. Menggabungkan dengan mana : Anda juga boleh menggunakan di mana untuk menapis baris sebelum berkumpul dan perlu menapis kumpulan. Contohnya:

     <code class="sql">SELECT region, SUM(amount) as total_sales FROM sales WHERE amount > 0 GROUP BY region HAVING SUM(amount) > 10000;</code>
    Salin selepas log masuk

    Dalam pertanyaan ini, klausa WHERE pertama menapis mana -mana baris dengan jumlah negatif atau sifar, data kemudian dikelompokkan oleh region , dan klausa yang menapis kumpulan berdasarkan jumlah jualan.

Apakah perangkap yang berpotensi untuk dielakkan apabila menggunakan kumpulan oleh pertanyaan SQL?

Apabila menggunakan Kumpulan dengan klausa dalam pertanyaan SQL, terdapat beberapa perangkap yang berpotensi untuk dielakkan:

  1. Rujukan lajur yang salah : Dalam pertanyaan dengan kumpulan oleh, mana -mana lajur dalam senarai pilih yang bukan fungsi agregat mesti dimasukkan ke dalam Kumpulan mengikut klausa. Melupakan untuk memasukkan lajur yang tidak diagihkan dalam kumpulan oleh klausa boleh mengakibatkan kesilapan atau keputusan yang tidak dijangka. Contohnya:

     <code class="sql">SELECT region, product, SUM(amount) -- This will cause an error if 'product' is not included in GROUP BY FROM sales GROUP BY region;</code>
    Salin selepas log masuk

    Versi yang betul ialah:

     <code class="sql">SELECT region, product, SUM(amount) FROM sales GROUP BY region, product;</code>
    Salin selepas log masuk
  2. Pencampuran lajur agregat dan bukan agregat : Pencampuran lajur agregat dan bukan agregat dalam senarai pilih tanpa pengelompokan yang betul boleh membawa kepada hasil yang tidak dijangka. Contohnya:

     <code class="sql">SELECT region, SUM(amount), amount -- This will cause an error because 'amount' is not aggregated FROM sales GROUP BY region;</code>
    Salin selepas log masuk

    Untuk membetulkannya, anda perlu sama ada kumpulan dengan amount atau menggunakan fungsi agregat di atasnya.

  3. Menggunakan mempunyai tanpa kumpulan oleh : klausa yang mempunyai dimaksudkan untuk digunakan dengan kumpulan oleh. Menggunakan tanpa kumpulan oleh akan mengakibatkan kesilapan dalam banyak pangkalan data SQL. Contohnya:

     <code class="sql">SELECT region, SUM(amount) FROM sales HAVING SUM(amount) > 10000; -- This will cause an error because GROUP BY is missing</code>
    Salin selepas log masuk

    Versi yang betul ialah:

     <code class="sql">SELECT region, SUM(amount) FROM sales GROUP BY region HAVING SUM(amount) > 10000;</code>
    Salin selepas log masuk
  4. Isu -isu prestasi dengan dataset yang besar : Kumpulan dengan operasi boleh dikira secara mahal, terutamanya dengan dataset yang besar. Pertanyaan yang tidak dioptimumkan boleh menyebabkan isu prestasi. Untuk mengurangkan ini, pertimbangkan untuk menggunakan pengindeksan yang sesuai dan mengelakkan lajur yang tidak perlu dalam kumpulan dengan klausa.
  5. Perintah Operasi : Ingatlah bahawa perintah operasi di SQL adalah di mana, kumpulan oleh, mempunyai, dan kemudian pilih. Salah faham pesanan ini boleh menyebabkan keputusan yang salah. Sebagai contoh, klausa WHERE menapis baris sebelum kumpulan, sambil mempunyai kumpulan penapis selepas kumpulan.

Dengan menyedari perangkap -perangkap ini, anda boleh menulis kumpulan yang lebih berkesan dan cekap oleh pertanyaan.

Atas ialah kandungan terperinci Bagaimana anda mengumpulkan data menggunakan Kumpulan mengikut klausa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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