Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tổng hợp dữ liệu bằng các hàm nhóm (nhóm theo oracle)

Là một phần của hướng dẫn học Oracle SQL, Đây là chi tiết tốt về nhóm của oracle

Các hàm Nhóm không giống như các hàm giá trị đơn lẻ hoạt động trên tập hợp các hàng và trả về một hàng cho mỗi nhóm. Tập hợp các hàng có thể là một bảng toàn bộ hoặc bảng được chia thành các nhóm

Các loại Hàm nhóm trong Oracle bao gồm:

AVG ([Distinction / all] n) Chỉ kiểu dữ liệu số. Giá trị trung bình của cột n bỏ qua các giá trị rỗng
COUNT ({* / [Riêng biệt / tất cả] expr}) Nó chỉ là một hàm nhóm bao gồm các giá trị null. Nó đếm số hàng trong câu lệnh select thỏa mãn mệnh đề where. Đếm (*) bao gồm tất cả các giá trị null và trùng lặp
MAX ([Riêng biệt / tất cả] expr) Nó có thể sử dụng với bất kỳ kiểu dữ liệu nào. Nó cung cấp giá trị lớn nhất của expr bỏ qua giá trị null
MIN ([Riêng biệt / tất cả] expr) Nó có thể sử dụng với bất kỳ kiểu dữ liệu nào. . Nó cung cấp giá trị tối thiểu là expr bỏ qua giá trị null
STDDEV ([Riêng biệt / tất cả] n) Chỉ kiểu dữ liệu số. Nó cung cấp độ lệch chuẩn là n bỏ qua các giá trị rỗng
SUM ([Riêng biệt / tất cả] n) Chỉ kiểu dữ liệu số và không thể có các toán tử số học khác trong hàm. nó cung cấp tổng của n bỏ qua giá trị rỗng
VARIANCE ([Riêng biệt / tất cả] n) Chỉ kiểu dữ liệu số. Nó cung cấp phương sai của n bỏ qua các giá trị null

Cú pháp:

SELECT col1, col2, … col_n,
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY col1, col2, … col_n
Having group condition;

Máy chủ Oracle đã thực hiện các bước sau

  • Đầu tiên, các hàng được chọn dựa trên mệnh đề where
  • Các hàng được nhóm lại
  • Chức năng nhóm được áp dụng cho từng nhóm
  • Nhóm phù hợp với tiêu chí trong mệnh đề có được hiển thị

Vì vậy mệnh đề WHERE được đánh giá đầu tiên (hạn chế kết quả truy vấn), sau đó mệnh đề GROUP BY (nhóm các kết quả của WHERE), sau đó là mệnh đề HAVING (hạn chế thêm kết quả, bằng cách hạn chế các nhóm được trả về).

Một số điểm quan trọng về nhóm theo oracle

(1) GROUP BY:Chia nhỏ kết quả của các hàm nhóm từ một bảng dữ liệu lớn thành các nhóm logic nhỏ hơn.

(2) Mệnh đề WHERE không thể hạn chế một nhóm, vì vậy hãy sử dụng mệnh đề HAVING.

(3) Không sử dụng bí danh cột trong mệnh đề GROUP BY.

(4) HAVING:hạn chế hiển thị các nhóm đối với những người “có” các điều kiện cụ thể.

(5) Hàm NVL cho phép một hàm GROUP BY bao gồm các giá trị null trong tính toán của nó.

(6) Bất kỳ cột hoặc biểu thức nào trong danh sách lựa chọn không phải là một hàm tổng hợp phải nằm trong nhóm theo mệnh đề

Ví dụ về Hàm nhóm trong Oracle

Đầu tiên chúng ta hãy tạo các bảng mẫu và sau đó thử nhóm bằng 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;

Một cột

Select dept , avg(sal)   from emp  group by dept;

Nhiều cột

Select deptno ,job, sum(sal) from emp group by deptno,job

Chức năng đếm

SELECT dept, COUNT(*) AS "Np of employees" FROM emp WHERE sal < 15000
GROUP BY dept;

Chức năng tối thiểu

SELECT dept, MIN(sal) AS "Lowest salary" FROM emp 
GROUP BY dept;

Hy vọng bạn thích bài viết này

Các bài viết có liên quan
Các hàm phân tích trong oracle:Các hàm Oracle Analytic tính toán giá trị tổng hợp dựa trên nhóm hàng bằng cách sử dụng mệnh đề over partition by oracle, chúng khác với các hàm tổng hợp
xếp hạng trong oracle:RANK, DENSE_RANK và ROW_NUMBER là phân tích oracle hàm được sử dụng để xếp hạng các hàng trong nhóm hàng được gọi là window
Hàm Lead trong oracle:Kiểm tra hàm LAG trong Oracle &hàm Lead trong Oracle, cách sử dụng chúng trong các truy vấn phân tích và cách hoạt động của nó trong Oracle sql
Truy vấn Top-N trong Oracle:Hãy xem trang này để khám phá các cách khác nhau để đạt được các Truy vấn Top-N trong Oracle và Phân trang trong cơ sở dữ liệu oracle truy vấn 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. Oracle:tình huống sử dụng RAISE_APPLICATION_ERROR là gì?

  2. Làm thế nào để sắp xếp theo số đầu tiên với truy vấn SQL của Oracle?

  3. Xóa các hàng trùng lặp trong bảng

  4. tạo chức năng tùy chỉnh cho sự khác biệt về ngày không bao gồm cuối tuần và ngày lễ trong oracle sql

  5. Thủ tục Oracle không trả về kết quả khi thực thi từ tác vụ tập lệnh trên SSIS