4.3.HÀM THAO TÁC TRÊN TẬP HỢP

Một phần của tài liệu Oracle PLSQL Language pot (Trang 37 - 39)

4.3.1. 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: Hàm SQL AVG([DISTINCT/ALL] n) COUNT([DISTINCT/ALL] expr) MAX([DISTINCT/ALL] expr) MIN([DISTINCT/ALL] expr) STDDVE([DISTINCT/ALL] n) SUM([DISTINCT/ALL] n) VARIANCE([DISTINCT/ALL] n) Diễn giải

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

row có expr khác null Giá trị lớn nhất của expr Giá trị nhỏ nhất của expr

Phương sai của n không kể trị null Tổng của của n không kể trị null Variance của n không 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 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;

Trang 34

Oracle cơ bản - SQL và PL/SQL

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

4.3.2. Mệnh đề GROUP BY

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. Ví dụ:

SELECT JOB, MAX(SAL) FROM EMP FROM EMP

WHERE JOB !=’MANAGER’ GROUP BY JOB; GROUP BY JOB; JOB MAX(SAL) ANALYST 3000 CLERK 1300 PRESIDENT 5000 SALESMAN 1600

SELECT JOB, MAX(SAL) FROM EMP FROM EMP GROUP BY JOB HAVING COUNT(*)>3; JOB MAX(SAL) CLERK 1300 SALESMAN 1600

SELECT JOB, MAX(SAL) FROM EMP FROM EMP HAVING MAX(SAL)>=3000 GROUP BY JOB; JOB MAX(SAL) ANALYST 3000 PRESIDENT 5000 Trang 35

Oracle cơ bản - SQL và PL/SQL

Một phần của tài liệu Oracle PLSQL Language pot (Trang 37 - 39)

Tải bản đầy đủ (PDF)

(106 trang)