Dalam Oracle, kata kunci "kumpulan mengikut" perlu digunakan bersama-sama dengan pernyataan SELECT untuk mengumpulkan hasil pertanyaan Baris boleh digabungkan menjadi baris ringkasan berkumpulan mengikut baris atau nilai sintaks "PILIH senarai medan DARI data nama jadual KUMPULAN MENGIKUT nama medan;".
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Oracle 11g, komputer Dell G3.
Kata kunci GROUP BY boleh mengumpulkan hasil pertanyaan berdasarkan satu atau lebih medan.
Klausa GROUP BY digunakan dalam pernyataan SELECT untuk menggabungkan baris ke dalam baris ringkasan berkumpulan mengikut nilai baris atau ungkapan. Klausa GROUP BY mengembalikan satu baris untuk setiap kumpulan.
Klausa GROUP BY selalu digunakan dengan fungsi agregat seperti AVG(), COUNT(), MAX(), MIN() dan SUM(). Dalam kes ini, fungsi agregat mengembalikan maklumat ringkasan untuk setiap kumpulan. Sebagai contoh, memandangkan beberapa kategori produk, fungsi AVG() mengembalikan harga purata produk dalam setiap kategori.
Yang berikut menggambarkan sintaks klausa GROUP BY Oracle:
SELECT 字段列表 FROM 数据表名 GROUP BY 字段名;
Klausa GROUP BY muncul selepas klausa FROM. Apabila klausa WHERE disediakan, klausa GROUP BY mesti diletakkan sebelum klausa WHERE.
Klausa GROUP BY mengelompokkan baris mengikut nilai dalam lajur pengelompokan seperti c1, c2 dan c3. Klausa GROUP BY hanya boleh mengandungi lajur teragregat atau berkumpulan.
Jika anda ingin menentukan berbilang tahap pengelompokan yang harus dikira sekali gus, gunakan sintaks ROLLUP berikut:
SELECT 字段列表 FROM 数据表名 GROUP BY ROLLUP(c1,c2,c3);
Kami akan menunjukkan menggunakan jadual orders
dan order_items
berikut dalam pangkalan data sampel:
1. Contoh asas Oracle GROUP OLEH
Pernyataan berikut menggunakan klausa GROUP BY
untuk mencari status pesanan unik dalam jadual orders
:
SELECT status FROM orders GROUP BY status;
Laksanakan pertanyaan di atas kenyataan dan dapatkan keputusan berikut -
Pernyataan ini mempunyai kesan yang sama seperti pernyataan berikut menggunakan operator DISTINCT
:
SELECT DISTINCT status FROM orders;
2. Oracle GROUP BY contoh pengagregatan
Pernyataan berikut mengembalikan kuantiti pesanan pelanggan:
SELECT customer_id, COUNT( order_id ) FROM orders GROUP BY customer_id ORDER BY customer_id;
Laksanakan pernyataan pertanyaan di atas dan dapatkan yang berikut keputusan -
Dalam contoh ini, kami mengumpulkan pesanan mengikut nombor pelanggan dan menggunakan fungsi COUNT()
untuk mengembalikan kuantiti pesanan bagi setiap kumpulan.
Untuk mendapatkan data yang lebih bermakna, anda boleh menyertai jadual orders
dengan jadual customers
seperti berikut:
SELECT name, COUNT( order_id ) FROM orders INNER JOIN customers USING(customer_id) GROUP BY name ORDER BY name;
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut -
3. Oracle GROUP BY contoh ungkapan
Contoh berikut mengumpulkan pesanan mengikut tahun dan Mengembalikan nombor daripada pesanan setiap tahun. Rujuk pernyataan pertanyaan berikut-
SELECT EXTRACT(YEAR FROM order_date) YEAR, COUNT( order_id ) FROM orders GROUP BY EXTRACT(YEAR FROM order_date) ORDER BY YEAR;
Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut-
Dalam contoh ini, kami menggunakan EXTRACT()
fungsi dari Dapatkan maklumat tahun dari tarikh pesanan.
Tidak seperti contoh sebelumnya, di sini ungkapan digunakan yang mengembalikan tahun dalam klausa GROUP BY
.
4. Oracle GROUP BY dengan contoh ROLLUP
Penyata berikut mengira jualan dan mengira jualan mengikut customer_id
, status
dan ( customer_id
, status
) kumpulkan mereka:
SELECT customer_id, status, SUM( quantity * unit_price ) sales FROM orders INNER JOIN order_items USING(order_id) GROUP BY ROLLUP( customer_id, status );
Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut -
Tutorial yang disyorkan: " Tutorial Oracle》
Atas ialah kandungan terperinci Cara menggunakan kumpulan oracle oleh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!