Oracle Function: Hàm COUNT

Trong bài này chúng ta sẽ tìm hiểu hàm COUNT trong Oracle.

Hàm COUNT dùng để đếm số lượng records trả về của một biểu thức, và thường được sử dụng trong câu lệnh Select để đếm tổng số record của table.

1. Hàm COUNT trong Oracle

Sau đây là cú pháp và cách sử dụng hàm COUNT.

Cú pháp

SELECT COUNT(aggregate_expression)
FROM tables
[WHERE conditions];

Trong đó:

  • aggregate_expression là tên của field cần đếm.
  • tables là những bảng cần đếm.
  • WHERE conditions là điều kiện lọc dữ liệu.

Return

Trả về một số tự nhiên, đó chính là số đếm của tổng các record thỏa điều kiện của câu lệnh SQL.

Version

Hàm này sử dụng được ở các phiên bản sau:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

2. Ví dụ hàm COUNT trong Oracle

Sau đây là một vài ví dụ, các bạn tham khảo để hiểu rõ hơn nhé.

Ví dụ 1:  Đếm tổng số sinh viên đang học khóa CNTT.

SELECT COUNT(student_id) AS total 
FROM students
WHERE department = 'CNTT'

Ví dụ 2: Đếm tổng số nhân viên có mức lương lớn hơn 5.000.000đ.

SELECT COUNT(employee_id) AS total 
FROM employees
WHERE salary > '5000000'

Lưu ý:

  • Với những giá trị NULL thì mặc định hàm COUNT sẽ không đếm.
  • Bạn truyền vào * nếu muốn đếm tất cả các field.

Nếu bạn muốn đếm và loại bỏ dữ liệu bị trùng thì hãy dùng từ khóa DISTINCT.

Ví dụ 3: Đếm tổng số phòng ban có nhân viên có lương lớn hơn 10.000.000đ / tháng.

Với ví dụ này thì mình sẽ đếm trong bảng employee, bảng này có mã phòng ban nên chỉ cần COUNT UNIQUE mã phòng ban là được.

SELECT COUNT(DISTINCT department_id) AS "Department Unique"
FROM employees
WHERE salary > 10000000;

3. Hàm COUNT kết hợp Group By

Hàm COUNT sử dụng rất hay trong Group By, và hay như thế nào thì chúng ta cùng xem ví dụ dưới đây.

Đề bài: Hãy đếm tổng số nhân viên của từng phòng ban.

Giả sử ta có hai bảng đó nhà:

  • NHANVIEN (MANHANVIEN | TENNHANVIEN | MAPHONGBAN)
  • PHONGBAN (MAPHONGBAN, TENPHONGBAN)

Trong đó MAPHONGBAN là khóa ngoại của bảng NHANVIEN. Câu truy vấn cuối cùng cua chúng ta như sau:

SELECT COUNT(MANHANVIEN) AS "TONG NHAN VIEN", TENPHONGBAN, MAPHONGBAN
FROM NHANVIEN NV JOIN PHONGBAN PB ON NV.MAPHONGBAN = PB.MAPHONGBAN
GROUP BY NV.MAPHONGBAN

Câu truy vấn này sẽ trả về danh sách số lượng nhân viên của từng phòng ban.

Nguồn: freetuts.net