【Oracle】HÀM THAO TÁC TRÊN TẬP HỢP

 Các hàm tác động trên nhóm 



Các hàm tác động trên nhóm các dòng dữ liệu hay tác động lên một tập hợp các các dòng dữ liệu bao gồm: 

・AVG([DISTINCT/ALL] n) 

Giá trị trung bình của n,không kể trị null Số 

・COUNT([DISTINCT/ALL] expr) 

row có expr khác null 

・MAX([DISTINCT/ALL] expr) 

Giá trị lớn nhất của expr 

・MIN([DISTINCT/ALL] expr) 

Giá trị nhỏ nhất của expr 

・STDDVE([DISTINCT/ALL] n) 

Phương sai của n không kể trị null Tổng của 

・SUM([DISTINCT/ALL] n) 

của n không kể trị null Variance của n không 

・VARIANCE([DISTINCT/ALL] n) 

kể trị null 

Chú ý: Tất cả các hàm trên nhóm mẫu tin đều bỏ qua giá trị NULL trừ hàm COUNT. Dùng hàm NVL để chuyển đổi và tính giá trị NULL. Có 2 cách để dùng các các hàm này Tác động trên toàn bộ các dòng dữ liệu của câu lệnh truy vấn Tác động trên một nhóm dữ liệu cùng tính chất của câu lệnh truy vấn. Cùng tính chất được chỉ bởi mệnh đề:

 [GROUP BY expr] [HAVING condition] 

Ví dụ: Tác động trên toàn bộ các dòng dữ liệu của câu lệnh truy vấn: Tính mức lương trung bình của toàn bộ nhân viên Select AVG(SAL) FROM EMP; Tính mức lương thấp nhất của nhân viên làm nghề 

CLERK Select MIN(SAL) FROM EMP WHERE JOB =’CLERK’: 

Ví dụ: Tác động trên một nhóm dữ liệu cùng tính chất của câu lệnh truy vấn. Tính mức lương trung bình của từng loại nghề nghiệp

 SELECT JOB, AVG(SAL) FROM EMP GROUP BY JOB; 

Chú ý: Chỉ được cùng đặt trong mệnh để SELECT các hàm nhóm hoặc các column đã đặt trong mệnh đề GROUP BY. 

Ví dụ: Đúng: SELECT MAX(SAL), JOB FROM EMP GROUP BY JOB; 

Sai: SELECT MAX(SAL), JOB FROM EMP; 

Cú pháp:

 SELECT [DISTINCT ] {*, column [alias],...} 

FROM table

 [WHERE condition] 

[GROUP BY expr] 

[HAVING condition]

[ORDER BY expr/position 

[DESC/ASC]] 

Mệnh đề GROUP BY sẽ nhóm các dòng dữ liệu có cùng giá trị của expr. 

Ví dụ: GROUP BY JOB nghĩa là sẽ nhóm các nghề giống nhau. 

Mệnh đề HAVING là đặt điều kiện của nhóm dữ liệu. Mệnh đề này khác mệnh đề WHERE ở chỗ mệnh đề WHERE đặt điều kiện cho toàn bộ câu lệnh SELECT.

・Hàm NULLIF Cú pháp: 

NULLIF(expr1, expr2) Hàm trả về giá trị NULL nếu biểu thức thứ nhất bằng biểu thức thứ 2. 

Trong trường hợp ngược lại, nó trả về giá trị của biểu thức thứ nhất. 

・ Hàm COALSCE Cú pháp: 

COALESCE(expr1, expr2, expr3, ...) Trả về giá trị của tham số đầu tiên khác null 

・ Câu lệnh case Ví dụ: 

Case câu lệnh 

SELECT 

ENAME, EXTRACT(YEAR FROM HIREDATE) AS YEAR_OF_HIRE, 

(CASE EXTRACT(YEAR FROM HIREDATE) 

WHEN 2002 THEN 'NEW HIRE' 

WHEN 1997 THEN 'FIVE YEARS SERVICE' 

WHEN 1992 THEN 'TEN YEARS SERVICE' 

ELSE 'NO AWARD THIS YEAR' END ) AS AWARD FROM EMP; 

CASE biểu thức 

SELECT 

ENAME, SAL, (CASE WHEN JOB = ‘DBA’ THEN SAL * 1.5 

WHEN HIREDATE < SYSDATE - TO_YMINTERVAL(’05-00’) THEN SAL * 1.25 

WHEN DEPTNO IN (40,30,10) 

THEN SAL * 1.1 ELSE SAL * .9 END ) AS NEW_SAL FROM EMP; 

--*--

No comments

Powered by Blogger.