4.3.HÀM THAO TÁC TRÊN TP Ợ 4.3.1 Các hàm tác đ ng trên nhóm ộ

Một phần của tài liệu Oracle cơ bản - SQL và PL/SQL pptx (Trang 37 - 39)

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;

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 : ụ (adsbygoogle = window.adsbygoogle || []).push({});

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 cơ bản - SQL và PL/SQL pptx (Trang 37 - 39)