Báo cáo dữ liệu tổng hợp sử dụng Group Functions

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 functionsSingle-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àmMô 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, VARCHAR2NUMBER, 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