SysVN tiếp tục giới thiệu bài viết trong chuyên mục Oracle “Báo cáo dữ liệu tổng hợp sử dụng Group Functions”. Mời các bạn theo dõi!
1. Mục tiêu
Sau khi hiểu bài này các bạn có thể thực hiện được:
- Biết và sử dụng được những group functions có trong Oracle Database
- Cách sử dụng mệnh đề GROUP BY
- Thêm và loại những hàng được nhóm lại bằng cách sử dụng mệnh đề HAVING
2. Group Functions là gì?
Group Functions còn gọi là Multiple-Row Functions là loại hàm xử lý trên nhiều hàng và trả về một kết quả. Xem hình bên dưới
Group Functions không giống như single-row functions. Single-row functions là các hàm có thể nhận tham số đầu vào, xử lý tính toán, format hiển thị hay chuyển đổi kiểu dữ liệu và trả ra kết quả cho mỗi dòng. Các hàm này có thể sử dụng trong mệnh đề SELECT, WHERE, ORDER BY và cũng có thể lồng nhau.
3. Những kiểu Group Functions
Cú pháp:
Bảng mô tả
Hàm | Mô tả |
AVG([DISTINCT|ALL]n) | Tính giá trị trung bình của n, bỏ qua giá trị null |
MAX([DISTINCT|ALL]expr) | Tính giá trị lớn nhất của biểu thức expr, bỏ qua null |
MIN([DISTINCT|ALL]expr) | Tính giá trị nhỏ nhất của biểu thức expr, bỏ qua null |
STDDEV([DISTINCT|ALL]n) | Tính độ lệch chuẩn của n, bỏ qua null |
SUM([DISTINCT|ALL]n) | Tính tổng n, bỏ qua null |
VARIANCE([DISTINCT|ALL]n) | Tính độ chênh lệch của n, bỏ qua null |
COUNT(*) | Đếm tất cả các hàng được chọn, bao gồm nhưn |
Chú ý:
DISTINCT được dùng để loại những dòng trùng. ALL bao gồm tất cả, mặc định là ALL
Kiểu dữ liệu của biểu thức expr có thể là CHAR, VARCHAR2, NUMBER, DATE
Tất cả Group Functions bỏ qua giá trị null. Trong tình huống sử dụng giá trị null thì dùng các hàm NVL, NVL2, COALESCE, CASE, DECODE.
4. Cách sử dụng hàm AVR, SUM, MIN, MAX
Hàm AVR, SUM, MIN, MAX được sử dụng cho dữ liệu kiểu số. Riêng đối với hàm MIN, MAX sử dụng được với kiểu character và date .
Ví dụ 1:
Vi dụ 2:
Chú ý: AVR, SUM, VARIANCE, STDDEV chỉ được sử dụng với kiểu số. MIN, MAX không được sử dụng với kiểu LOB, LONG
5. Cách sử dụng hàm COUNT
COUNT(*) tính số hàng trong table bao gồm những hàng chứa giá trị null và những hàng trùng. COUNT(expr) trả về số hàng non-null và bao gồm hàng có giá trị trùng của column được xác định bởi expr. COUNT(DISTINCT expr) trả về số hàng non-null và loại giá trị trùng của column được xác định bởi expr.
Vi dụ 1:
SELECT COUNT(*)
FROM employees
WHERE department_id = 50;
COUNT(*)
———-
45
Ví dụ 2:
SELECT COUNT(commission_pct)
FROM employees
WHERE department_id = 50;
COUNT(COMMISSION_PCT)
———————
0
Vi dụ 3:
SELECT COUNT(DISTINCT department_id)
FROM employees;
COUNT(DISTINCTDEPARTMENT_ID)
—————————-
11
6. Sử dụng Group Functions với giá trị Null
Group Functions bỏ qua giá trị Null trong column
Vi dụ:
SELECT AVG(commission_pct)
FROM employees;
AVG(COMMISSION_PCT)
——————-
.222857143
Để sử dụng giá trị Null trong hàm ta có thể sử dụng hàm NVL
Vi dụ:
SELECT AVG(NVL(commission_pct, 0))
FROM employees;
AVG(NVL(COMMISSION_PCT,0))
————————–
.072897196