Rumah >pangkalan data >Oracle >Cara menggunakan kumpulan oracle oleh

Cara menggunakan kumpulan oracle oleh

青灯夜游
青灯夜游asal
2022-03-17 12:47:5210558semak imbas

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;".

Cara menggunakan kumpulan oracle oleh

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi Oracle 11g, komputer Dell G3.

Pengenalan kepada klausa Oracle GROUP BY

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);

Oracle GROUP BY Contoh

Kami akan menunjukkan menggunakan jadual orders dan order_items berikut dalam pangkalan data sampel:

Cara menggunakan kumpulan oracle oleh

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 -

Cara menggunakan kumpulan oracle oleh

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 -

Cara menggunakan kumpulan oracle oleh

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 -

Cara menggunakan kumpulan oracle oleh

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-

Cara menggunakan kumpulan oracle oleh

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 -

Cara menggunakan kumpulan oracle oleh

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!

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