Sebagai bagian dari mempelajari tutorial Oracle SQL, Berikut detail yang bagus tentang group by oracle
Fungsi Grup tidak seperti fungsi nilai tunggal beroperasi pada kumpulan baris dan mengembalikan satu baris per grup. Himpunan baris dapat berupa tabel utuh atau tabel yang dibagi menjadi beberapa grup
Jenis Fungsi Grup di Oracle meliputi:
AVG([Distinct/all] n) | Hanya tipe data numerik. Nilai rata-rata kolom n mengabaikan nilai nol |
COUNT({*/[Distinct/all]expr}) | Ini hanya fungsi grup yang menyertakan nilai nol. Ini menghitung jumlah baris dalam pernyataan pilih yang memenuhi klausa where. Hitung (*) mencakup semua nilai nol dan duplikat |
MAX([Distinct/all] expr) | Dapat digunakan dengan tipe data apa pun. Ini memberikan nilai maksimum expr mengabaikan nilai null |
MIN([Distinct/all] expr) | Dapat digunakan dengan tipe data apa pun. . Ini memberikan nilai minimum expr mengabaikan nilai null |
STDDEV([Berbeda/semua] n) | Hanya tipe data numerik. Ini memberikan standar deviasi n mengabaikan nilai nol |
SUM ([Berbeda/semua] n) | Hanya tipe data numerik dan tidak dapat memiliki operator aritmatika lain dalam fungsi. Ini memberikan jumlah n mengabaikan nilai nol |
VARIANSI([Berbeda/semua] n) | Hanya tipe data numerik. Ini memberikan varians n mengabaikan nilai nol |
Sintaks:
SELECT col1, col2, … col_n, aggregate_function (aggregate_expression) FROM tables [WHERE conditions] GROUP BY col1, col2, … col_n Having group condition;
Server Oracle melakukan langkah-langkah berikut
- Pertama baris dipilih berdasarkan klausa where
- Baris dikelompokkan
- Fungsi grup diterapkan ke setiap grup
- Grup yang cocok dengan kriteria dalam klausa memiliki ditampilkan
Jadi klausa WHERE dievaluasi terlebih dahulu (membatasi hasil kueri), lalu klausa GROUP BY (mengelompokkan hasil WHERE), lalu klausa HAVING (lebih membatasi hasil, dengan membatasi grup yang dikembalikan).
Beberapa poin penting tentang grup menurut oracle
(1) GROUP BY:Memecah hasil fungsi grup dari satu tabel data besar menjadi pengelompokan logis yang lebih kecil.
(2) Klausa WHERE tidak dapat membatasi grup, jadi gunakan klausa HAVING.
(3) Jangan gunakan alias kolom dalam klausa GROUP BY.
(4) HAVING:membatasi tampilan grup hanya untuk grup yang "memiliki" kondisi yang ditentukan.
(5) Fungsi NVL memungkinkan fungsi GROUP BY untuk memasukkan nilai null dalam perhitungannya.
(6) Setiap kolom atau ekspresi dalam daftar pilihan yang bukan merupakan fungsi agregat harus dikelompokan berdasarkan klausa
Contoh Fungsi Grup di Oracle
Mari kita buat tabel sampel terlebih dahulu lalu coba grup dengan oracle sql
CREATE TABLE "DEPT" ( "DEPTNO" NUMBER(2,0), "DNAME" VARCHAR2(14), "LOC" VARCHAR2(13), CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO") ) CREATE TABLE "EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "DEPT" ("DEPTNO") ENABLE ); insert into DEPT values(10, 'ACCOUNTING', 'NEW YORK'); insert into dept values(20, 'RESEARCH', 'DALLAS'); insert into dept values(30, 'RESEARCH', 'DELHI'); insert into dept values(40, 'RESEARCH', 'MUMBAI'); insert into emp values( 7698, 'Blake', 'MANAGER', 7839, to_date('1-5-2007','dd-mm-yyyy'), 2850, null, 10 ); insert into emp values( 7782, 'Clark', 'MANAGER', 7839, to_date('9-6-2008','dd-mm-yyyy'), 2450, null, 10 ); insert into emp values( 7788, 'Scott', 'ANALYST', 7566, to_date('9-6-2012','dd-mm-yyyy'), 3000, null, 20 ); insert into emp values( 7789, 'TPM', 'ANALYST', 7566, to_date('9-6-2017','dd-mm-yyyy'), 3000, null, null ); insert into emp values( 7560, 'T1OM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, 20 ); insert into emp values( 7790, 'TOM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, null ); commit; Select * from emp;
Kolom Tunggal
Select dept , avg(sal) from emp group by dept;
Beberapa Kolom
Select deptno ,job, sum(sal) from emp group by deptno,job
Fungsi hitung
SELECT dept, COUNT(*) AS "Np of employees" FROM emp WHERE sal < 15000
GROUP BY dept;
Fungsi Minimum
SELECT dept, MIN(sal) AS "Lowest salary" FROM emp
GROUP BY dept;
Semoga Anda menyukai artikel ini
Artikel Terkait
Fungsi analitik di oracle :Fungsi Oracle Analytic menghitung nilai agregat berdasarkan kelompok baris dengan menggunakan lebih dari partisi oleh klausa oracle , mereka berbeda dari fungsi agregat
peringkat di oracle :RANK, DENSE_RANK dan ROW_NUMBER adalah oracle analitis fungsi yang digunakan untuk menentukan peringkat baris dalam grup baris yang disebut window
Fungsi utama di oracle :Lihat fungsi LAG di Oracle &fungsi Lead di Oracle, cara menggunakannya dalam kueri analitik dan cara kerjanya di Oracle sql
Kueri Top-N di Oracle :Lihat halaman ini tentang menjelajahi berbagai cara untuk mencapai Kueri Top-N di Oracle dan Pagination di oracle query database oracle.