Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Menggabungkan Data Menggunakan Fungsi Grup (grup demi oracle)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Oracle Menghitung Cluster

  2. Bagaimana Mengenkripsi Kata Sandi di Oracle?

  3. JDBC Batch menyisipkan penanganan pengecualian

  4. Mengaktifkan SSL atau TLS di Oracle Apps R12

  5. Oracle menyalin data ke tabel lain