Rumah pangkalan data tutorial mysql ORACLE ROLLUP和CUBE函数

ORACLE ROLLUP和CUBE函数

Jun 07, 2016 pm 03:36 PM
g oracle rollup fungsi

Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。如果是GROUP BY CUBE(A, B, C),则首先会对

Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。 grouping_id()可以美化效果。

一、CUBE和ROLLUP

例子:

SELECT
MANAGER_ID, DEPARTMENT_ID, SUM(SALARY) DD
FROM EMPLOYEES EMP
WHERE DEPARTMENT_ID IN (20,30)
GROUP BY CUBE(DEPARTMENT_ID,MANAGER_ID)

返回结果:

MANAGER_ID DEPARTMENT_ID DD

43700
100 24000
114 13700
201 6000
20 19000
100 20 13000
201 20 6000
30 24700
100 30 11000
114 30 13700

二、利用GROUPING美化数据结果

SELECT
GROUPING(MANAGER_ID) G_MANAGER_ID,
GROUPING(DEPARTMENT_ID) G_DEPARTMENT_ID,
MANAGER_ID,
DEPARTMENT_ID,
SUM(SALARY) DD
FROM EMPLOYEES EMP
WHERE DEPARTMENT_ID IN (20,30)
GROUP BY CUBE(DEPARTMENT_ID,MANAGER_ID)

返回结果:

ORACLE ROLLUP和CUBE函数

为NULL的地方GROUPING()填充1。

三、GROUPING_ID()函数可以接受一列或多列,返回GROUPING位向量的十进制值

例子:

SELECT
GROUPING(DEPARTMENT_ID) W,
GROUPING(MANAGER_ID) Q,
GROUPING(DEPARTMENT_ID) || GROUPING(MANAGER_ID) E,
GROUPING_ID(DEPARTMENT_ID, MANAGER_ID) R,
MANAGER_ID,
DEPARTMENT_ID,
SUM(SALARY) DD
FROM EMPLOYEES EMP
WHERE DEPARTMENT_ID IN (20,30)
GROUP BY CUBE(DEPARTMENT_ID,MANAGER_ID)

返回结果:

ORACLE ROLLUP和CUBE函数

利用GROUPING_ID()函数特性,过滤只有小计和合计的行数据:

SELECT
GROUPING(DEPARTMENT_ID) W,
GROUPING(MANAGER_ID) Q,
GROUPING(DEPARTMENT_ID) || GROUPING(MANAGER_ID) E,
GROUPING_ID(DEPARTMENT_ID, MANAGER_ID) R,
MANAGER_ID,
DEPARTMENT_ID,
SUM(SALARY) DD
FROM EMPLOYEES EMP
WHERE DEPARTMENT_ID IN (20,30)
GROUP BY CUBE(DEPARTMENT_ID,MANAGER_ID)
HAVING GROUPING_ID(DEPARTMENT_ID, MANAGER_ID) > 0

四、GROUP_ID() 函数可用于消除GROUP BY子句返回的重复记录。GROUP_ID()不接受任何参数。如果某个特定的分组重复出现n次,那么GROUP_ID()返回从0到n-1之间的一个整数。

先看不使用GROUP_ID()时的效果

SELECT
DEPARTMENT_ID,
MANAGER_ID,
GROUP_ID() D,
SUM(SALARY) DD
FROM EMPLOYEES EMP
WHERE DEPARTMENT_ID IN (20)
GROUP BY DEPARTMENT_ID, CUBE(DEPARTMENT_ID,MANAGER_ID)
ORDER BY DEPARTMENT_ID,MANAGER_ID

返回结果:DEPARTMENT_ID为NULL的记录不在下面集合里面,但是有多了几条重复数据(D=1)

ORACLE ROLLUP和CUBE函数
使用GROUP_ID()过滤数据,GROUP_ID() = 0

SELECT
DEPARTMENT_ID,
MANAGER_ID,
GROUP_ID(),
SUM(SALARY) DD
FROM EMPLOYEES EMP
WHERE DEPARTMENT_ID IN (20,30)
GROUP BY DEPARTMENT_ID, CUBE(DEPARTMENT_ID,MANAGER_ID)
HAVING GROUP_ID() = 0
ORDER BY DEPARTMENT_ID,MANAGER_ID

返回结果:

ORACLE ROLLUP和CUBE函数

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara memeriksa saiz meja oracle Cara memeriksa saiz meja oracle Apr 11, 2025 pm 08:15 PM

Untuk menanyakan saiz ruang meja oracle, ikuti langkah -langkah berikut: Tentukan nama meja dengan menjalankan pertanyaan: pilih Tablespace_Name dari DBA_TableSpaces; Tanya saiz meja dengan menjalankan pertanyaan: pilih jumlah (bait) sebagai total_size, jumlah (bytes_free) sebagai tersedia_space, jumlah (bytes) - jumlah (bytes_free) sebagai digunakan_space dari dba_data_files di mana tablespace_

Cara melihat contoh nama oracle Cara melihat contoh nama oracle Apr 11, 2025 pm 08:18 PM

Terdapat tiga cara untuk melihat nama contoh di Oracle: Gunakan "sqlplus" dan "pilih instance_name dari v $ instance;" Perintah pada baris arahan. Gunakan "pertunjukan instance_name;" Perintah dalam SQL*Plus. Semak Pembolehubah Alam Sekitar (ORACLE_SID pada Linux) melalui Pengurus Tugas Sistem Operasi, Pengurus Oracle Enterprise, atau melalui sistem operasi.

Cara menyulitkan pandangan oracle Cara menyulitkan pandangan oracle Apr 11, 2025 pm 08:30 PM

Penyulitan Oracle View membolehkan anda menyulitkan data dalam pandangan, dengan itu meningkatkan keselamatan maklumat sensitif. Langkah -langkah termasuk: 1) mewujudkan kunci penyulitan induk (MEK); 2) mencipta pandangan yang disulitkan, menyatakan pandangan dan MEK untuk disulitkan; 3) Memberi kuasa pengguna untuk mengakses pandangan yang disulitkan. Bagaimana pandangan yang disulitkan berfungsi: Apabila permintaan pengguna untuk paparan yang disulitkan, Oracle menggunakan MEK untuk menyahsulit data, memastikan bahawa hanya pengguna yang diberi kuasa dapat mengakses data yang boleh dibaca.

Cara menyahpasang pemasangan Oracle gagal Cara menyahpasang pemasangan Oracle gagal Apr 11, 2025 pm 08:24 PM

Nyahpasang Kaedah untuk kegagalan pemasangan Oracle: Tutup Perkhidmatan Oracle, Padam Fail Program Oracle dan Kekunci Pendaftaran, Nyahpasang pembolehubah persekitaran Oracle, dan mulakan semula komputer. Jika penyahpasang gagal, anda boleh menyahpasang secara manual menggunakan alat penyahpasang Oracle Universal.

Cara menyelesaikan masalah penutup kursor oracle Cara menyelesaikan masalah penutup kursor oracle Apr 11, 2025 pm 10:18 PM

Kaedah untuk menyelesaikan masalah penutupan kursor Oracle termasuk: secara eksplisit menutup kursor menggunakan pernyataan Tutup. Mengisytiharkan kursor dalam klausa kemas kini supaya ia ditutup secara automatik selepas skop berakhir. Mengisytiharkan kursor dalam klausa menggunakan supaya ia secara automatik ditutup apabila pembolehubah PL/SQL yang berkaitan ditutup. Gunakan pengendalian pengecualian untuk memastikan kursor ditutup dalam keadaan pengecualian. Gunakan kolam sambungan untuk menutup kursor secara automatik. Lumpuhkan penyerahan automatik dan penangguhan kursor kelewatan.

Cara memeriksa nombor oracle yang tidak sah Cara memeriksa nombor oracle yang tidak sah Apr 11, 2025 pm 08:27 PM

Kesalahan angka Oracle tidak sah mungkin disebabkan oleh jenis data yang tidak sepadan, limpahan angka, kesilapan penukaran data, atau rasuah data. Langkah -langkah penyelesaian masalah termasuk memeriksa jenis data, mengesan limpahan digital, memeriksa penukaran data, memeriksa rasuah data, dan meneroka penyelesaian lain yang mungkin seperti mengkonfigurasi parameter NLS_NUMERIC_CHARACTERS dan membolehkan pembalakan pengesahan data.

Cara memadam semua data dari oracle Cara memadam semua data dari oracle Apr 11, 2025 pm 08:36 PM

Memadam semua data dalam Oracle memerlukan langkah -langkah berikut: 1. Mewujudkan sambungan; 2. Lumpuhkan kekangan utama asing; 3. Padam data jadual; 4. Mengemukakan transaksi; 5. Membolehkan kekangan utama asing (pilihan). Pastikan untuk menyokong pangkalan data sebelum pelaksanaan untuk mengelakkan kehilangan data.

Cara Menyiapkan Pengguna Oracle Cara Menyiapkan Pengguna Oracle Apr 11, 2025 pm 08:21 PM

Untuk membuat pengguna di Oracle, ikuti langkah -langkah berikut: Buat pengguna baru menggunakan pernyataan pengguna Create. Berikan kebenaran yang diperlukan menggunakan penyata geran. Pilihan: Gunakan pernyataan sumber untuk menetapkan kuota. Konfigurasikan pilihan lain seperti peranan lalai dan ruang meja sementara.

See all articles