kumpulan dengan bermaksud "kueri kumpulan", yang boleh difahami sebagai "kumpulan (Kumpulan) mengikut (oleh) peraturan tertentu"; dan kemudian melakukan pemprosesan data pada beberapa kawasan kecil. Dalam MySQL, GROUP BY ialah klausa pilihan bagi pernyataan SELECT yang digunakan untuk mengumpulkan hasil pertanyaan berdasarkan satu atau lebih medan Ia mengurangkan bilangan baris dalam set hasil.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
kumpulan dengan bermaksud "pertanyaan kumpulan".
Pernyataan Kumpulan Mengikut secara literal bermaksud "Kumpulan mengikut (mengikut) peraturan tertentu" dalam bahasa Inggeris. Fungsinya adalah untuk membahagikan set data kepada beberapa kawasan kecil melalui peraturan tertentu, dan kemudian melakukan pemprosesan data pada beberapa kawasan kecil.
MySQL menggunakan pertanyaan GROUP BY group
Dalam MySQL, kata kunci GROUP BY boleh mengumpulkan hasil pertanyaan mengikut satu atau lebih medan.
Klausa GROUP BY mengumpulkan set baris ke dalam kumpulan kecil rekod baris ringkasan mengikut nilai lajur atau ungkapan. Klausa GROUP BY mengembalikan satu baris untuk setiap kumpulan. Dalam erti kata lain, ia mengurangkan bilangan baris dalam set hasil.
Klausa GROUP BY sering digunakan dengan fungsi agregat seperti SUM, AVG, MAX, MIN dan COUNT. Fungsi agregat digunakan dalam klausa SELECT untuk mengira maklumat tentang setiap kumpulan.
Klausa GROUP BY ialah klausa pilihan bagi pernyataan SELECT. Berikut ialah sintaks klausa GROUP BY:
SELECT c1, c2,..., cn, aggregate_function(ci) FROM table WHERE where_conditions GROUP BY c1 , c2,...,cn;
Klausa GROUP BY mesti muncul selepas klausa FROM dan WHERE. Mengikuti kata kunci GROUP BY ialah senarai lajur atau ungkapan yang dipisahkan koma yang akan digunakan sebagai syarat untuk mengumpulkan baris.
MySQL GROUP BY contoh
1. Simple MySQL GROUP BY contoh
Mari kita lihat contoh pangkalan data ( yiibaidb ), strukturnya adalah seperti berikut -
mysql> desc orders;
Dengan mengandaikan bahawa anda ingin mengumpulkan nilai status pesanan ke dalam subkumpulan, anda perlu menggunakan GROUP OLEH klausa Dan tentukan untuk melaksanakan pengumpulan mengikut lajur status, pertanyaan berikut:
SELECT status FROM orders GROUP BY status;
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -
Seperti yang anda lihat, GROUP Nilai status yang dikembalikan oleh klausa BY adalah unik. Ia berfungsi seperti operator DISTINCT, seperti yang ditunjukkan dalam pertanyaan berikut:
SELECT DISTINCT status FROM orders;
Melaksanakan pernyataan pertanyaan di atas, kami mendapat hasil berikut -
2. MySQL GROUP BY dan fungsi agregat
Anda boleh menggunakan fungsi agregat untuk melakukan pengiraan pada sekumpulan baris dan mengembalikan satu nilai. Klausa GROUP BY sering digunakan dengan fungsi agregat untuk melakukan pengiraan bagi setiap kumpulan dan mengembalikan satu nilai.
Sebagai contoh, jika anda ingin mengetahui bilangan pesanan dalam setiap status, anda boleh menggunakan fungsi COUNT dan pernyataan pertanyaan klausa GROUP BY, seperti yang ditunjukkan di bawah:
SELECT status, COUNT(*) AS total_number FROM orders GROUP BY status;
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-
Sila rujuk jadual pesanan dan butiran pesanan berikut, rajah ER mereka adalah seperti berikut-
Untuk mendapatkan jumlah keseluruhan semua pesanan mengikut status, anda boleh menggunakan jadual butiran pesanan untuk menyambungkan jadual pesanan, dan gunakan fungsi SUM untuk mengira jumlah keseluruhan. Sila rujuk pertanyaan berikut:
SELECT status, SUM(quantityOrdered * priceEach) AS amount FROM orders INNER JOIN orderdetails USING (orderNumber) GROUP BY status;
Melaksanakan pertanyaan di atas memberikan hasil berikut -
Begitu juga, pertanyaan berikut mengembalikan nombor pesanan dan bilangan setiap pesanan sekaligus.
SELECT orderNumber, SUM(quantityOrdered * priceEach) AS total FROM orderdetails GROUP BY orderNumber;
Lakukan pertanyaan di atas dan dapatkan hasil berikut -
3. MySQL GROUP BY contoh ekspresi
Selain lajur, baris boleh dikumpulkan mengikut ungkapan. Pertanyaan berikut mendapat jumlah jualan setahun.
SELECT YEAR(orderDate) AS year, SUM(quantityOrdered * priceEach) AS total FROM orders INNER JOIN orderdetails USING (orderNumber) WHERE status = 'Shipped' GROUP BY YEAR(orderDate);
Lakukan pertanyaan di atas dan dapatkan hasil berikut-
Dalam contoh ini, kami menggunakan fungsi YEAR untuk mengekstrak tahun daripada pesanan data tarikh (orderDate). Hanya pesanan dengan status Dihantar disertakan. Ambil perhatian bahawa ungkapan yang muncul dalam klausa SELECT mestilah sama seperti dalam klausa GROUP BY.
MySQL GROUP BY dan HAVING clause
Anda boleh menggunakan HAVING clause untuk menapis kumpulan yang dikembalikan oleh GROUP BY clause. Pertanyaan berikut menggunakan klausa HAVING untuk memilih jumlah jualan tahunan dari 2013 dan seterusnya.
SELECT YEAR(orderDate) AS year, SUM(quantityOrdered * priceEach) AS total FROM orders INNER JOIN orderdetails USING (orderNumber) WHERE status = 'Shipped' GROUP BY year HAVING year > 2013;
Lakukan pertanyaan di atas dan dapatkan hasil berikut -
GROUP BY子句:MySQL与标准SQL
标准SQL不允许使用GROUP BY子句中的别名,但MySQL支持此选项。以下查询从订单日期提取年份,并对每年的订单进行计数。该year用作表达式YEAR(orderDate)的别名,它也用作GROUP BY子句中的别名,此查询在标准SQL中无效。
参考以下查询 -
SELECT YEAR(orderDate) AS year, COUNT(orderNumber) FROM orders GROUP BY year;
执行上面查询,得到以下结果 -
MySQL还允许您以升序或降序(标准SQL不能提供)对组进行排序。默认顺序是升序。例如,如果要按状态获取订单数量并按降序对状态进行排序,则可以使用带有DESC的GROUP BY子句,如下查询语句:
SELECT status, COUNT(*) FROM orders GROUP BY status DESC;
执行上面查询,得到以下结果 -
请注意,在GROUP BY子句中使用DESC以降序对状态进行排序。我们还可以在GROUP BY子句中明确指定ASC,按状态对分组进行升序排序。
【相关推荐:mysql视频教程】
Atas ialah kandungan terperinci Apakah yang dimaksudkan dengan kumpulan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Mysqldiffersfromothersqldialectsyntaxforlimit, auto-increment, stringcomparison, subqueries, andperformanceanalysis.1) mySqlusSlimit, whilesqlserverestopandoracleusesusesrownum.2)

Pemisahan MySQL meningkatkan prestasi dan memudahkan penyelenggaraan. 1) Bahagikan jadual besar ke dalam kepingan kecil dengan kriteria tertentu (seperti julat tarikh), 2) secara fizikal membahagikan data ke dalam fail bebas, 3) MystQL boleh memberi tumpuan kepada partisi yang berkaitan apabila pertanyaan, 4) Pengoptimal pertanyaan boleh melangkau partisi yang tidak berkaitan, 5) Memilih strategi partisi yang tepat dan mengekalkannya secara tetap adalah kunci.

Bagaimana untuk memberikan dan membatalkan keizinan di MySQL? 1. Gunakan pernyataan geran untuk memberikan kebenaran, seperti GrantallPrivileGeSondatabase_name.to'username'@'host '; 2. Gunakan pernyataan membatalkan untuk membatalkan kebenaran, seperti RevokeAllPrivileGeSondatabase_name.from'username'@'host 'untuk memastikan komunikasi tepat pada masanya perubahan kebenaran.

InnoDB sesuai untuk aplikasi yang memerlukan sokongan transaksi dan kesesuaian yang tinggi, sementara myisam sesuai untuk aplikasi yang memerlukan lebih banyak bacaan dan kurang menulis. 1.InnoDB menyokong kunci transaksi dan peringkat bank, sesuai untuk sistem e-dagang dan perbankan. 2.Myisam menyediakan bacaan dan pengindeksan yang cepat, sesuai untuk sistem pengurusan blog dan kandungan.

Terdapat empat jenis utama dalam MySQL: innerjoin, leftjoin, rightjoin dan fullouterjoin. 1.InnerJoin Mengembalikan semua baris dalam dua jadual yang memenuhi syarat gabungan. 2.LeftJoin Mengembalikan semua baris di meja kiri, walaupun tidak ada baris yang sepadan di meja yang betul. 3. Rightjoin bertentangan dengan leftjoin dan mengembalikan semua baris di meja kanan. 4.FullouterJoin Mengembalikan semua baris dalam dua jadual yang memenuhi atau tidak memenuhi syarat gabungan.

MysqloffersvariousstorageEngines, eachSuitedfordifferentusecases: 1) innodbisidealforapplicationsNeedingacidcomplianceandhighconcurrency, supportingtransactionsandforeignkeys.2) myisamisbestforread-heavyworkloads, lacktransactive.2)

Kelemahan keselamatan biasa dalam MySQL termasuk suntikan SQL, kata laluan yang lemah, konfigurasi kebenaran yang tidak betul, dan perisian yang tidak dimulakan. 1. Suntikan SQL boleh dicegah dengan menggunakan pernyataan pra -proses. 2. Kata laluan yang lemah boleh dielakkan dengan secara paksa menggunakan strategi kata laluan yang kuat. 3. 4. Perisian yang tidak ditetapkan boleh ditampal dengan kerap memeriksa dan mengemas kini versi MySQL.

Mengenal pasti pertanyaan perlahan dalam MySQL boleh dicapai dengan membolehkan log pertanyaan perlahan dan menetapkan ambang. 1. Dayakan log pertanyaan perlahan dan tetapkan ambang. 2. Lihat dan menganalisis fail log pertanyaan perlahan, dan gunakan alat seperti mysqldumpslow atau pt-que-digest untuk analisis mendalam. 3. Mengoptimumkan pertanyaan perlahan dapat dicapai melalui pengoptimuman indeks, penulisan pertanyaan dan mengelakkan penggunaan pilih*.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
