01/10/2018, 17:19

Hàm COUNT_BIG() đếm tổng số item của một nhóm trong sql

Hàm COUNT_BIG() dùng để đếm tổng số item trong một nhóm. Hàm COUNT_BIG() cũng tương tự như hàm COUNT(). Điểm khác biệt duy nhất giữa 2 hàm này là giá trị trả về: Hàm COUNT_BIG() trả về kiểu dữ liệu bigint , trong khi đó hàm COUNT() trả về kiểu dữ liệu int . Cú pháp: COUNT_BIG ( { [ ALL ...

Hàm COUNT_BIG() dùng để đếm tổng số item trong một nhóm. Hàm COUNT_BIG() cũng tương tự như hàm COUNT(). Điểm khác biệt duy nhất giữa 2 hàm này là giá trị trả về: Hàm COUNT_BIG() trả về kiểu dữ liệu bigint, trong khi đó hàm COUNT() trả về kiểu dữ liệu int.

Cú pháp:

COUNT_BIG ( { [ ALL | DISTINCT ] expression} | * )

Trong đó:

  • ALL: đếm tất cả item có giá trị khác null. ALL được mặc định
  • DISTINCT: đếm trên những item có giá trị duy nhất, những item có giá trị lặp lại được tính là 1.
  • Expression: biểu thức làm điều kiện đếm, sử dụng trên tất cả các kiểu dữ liệu, ngoại trừ uniqueidentifier, text, image, hoặc ntext. Những hàm tính gọp (aggregate functions) và truy vấn lồng (subqueries) không được hỗ trợ.
  • *: đếm tất cả các row trong bảng (bao gồm dữ liệu null và lặp lại).  Hàm COUNT_BIG(*) không cần bất cứ đối số (parameter) nào và cũng không thể sử dụng DISTINCT. Hàm COUNT_BIG(*) không yêu cầu biểu thức expression

Giả sử bạn có bảng IS_SickBenefit lưu % các loại bảo hiểm để nhận bảo hiểm khi bạn ốm đau.

Bảng IS_SickBenefit gồm 3 cột sau:

–       Index: kiểu int, khóa chính

–       Type: kiểu nvarchar, lưu loại bảo hiểm được hưởng trợ cấp ốm đau

–       PercentBenefit: kiểu double lưu phần trăm được hưởng trợ cấp ốm đau

Giả sử, ta có bảng dữ liệu như sau:

Index Type PercentBenefit
1 Bảng thân ốm ngắn ngày 75
2 Ốm dài ngày 75
3 Dưỡng sức 25
4 Con ốm 75
5 Ốm bình thường null

Bây giờ chúng ta sẽ tính đếm số item của bảng dữ liệu trên, ta sử dụng cả ALL, DISTINCT và *

-- Câu 1:
SELECT COUNT_BIG(PercentBenefit) AS Total FROM IS_SickBenefit
-- =>Kết quả: 4
--Câu 2:
SELECT COUNT_BIG(DISTINCT PercentBenefit) AS Total FROM IS_SickBenefit
-- =>Kết quả: 2
-- Câu 3:
SELECT COUNT_BIG(*) AS Total FROM IS_SickBenefit
-- =>Kết quả: 5

Giải thích:

–       Câu 1: đếm tất cả các item, ngoại trừ item có dữ liệu null

–       Câu 2: cột PercentBenefit có 3 giá trị 75, vì dùng DISTINCT nên được tính là 1, và một giá trị 25. Nên kết quả 2 = 1 (của 75) + 1 (của 25)

–       Câu 3: đếm tất cả các row của bảng IS_SickBenefit

Chúc các bạn thành công! :roll:


0