Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách COUNT_BIG () hoạt động trong SQL Server

Trong SQL Server, COUNT_BIG() hàm trả về số lượng mục được tìm thấy trong một nhóm. Bạn có thể sử dụng nó để tìm ra có bao nhiêu hàng trong một bảng hoặc tập hợp kết quả.

Hàm này hoạt động tương tự như COUNT() hàm số. Sự khác biệt là COUNT() trả về kết quả của nó dưới dạng int , trong khi COUNT_BIG() trả về kết quả của nó dưới dạng bigint .

Do đó COUNT_BIG() có thể hữu ích nếu bạn mong đợi tập hợp kết quả của mình có số lượng hàng rất lớn (tức là lớn hơn 2.147.483.647).

Cú pháp

Cú pháp như sau:

-- Aggregation Function Syntax  
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )  
  
-- Analytic Function Syntax  
COUNT_BIG ( [ ALL ] { expression | * } ) OVER ( [  ] )

ALL áp dụng hàm tổng hợp cho tất cả các giá trị. Đây là giá trị mặc định.

DISTINCT chỉ định rằng hàm trả về số lượng giá trị không rỗng duy nhất.

expression là một biểu thức của bất kỳ loại nào. Hàm tổng hợp và truy vấn con không được hỗ trợ trong biểu thức.

* chỉ định rằng tất cả các hàng phải được đếm và trả về, bao gồm các hàng trùng lặp và các hàng chứa giá trị rỗng. COUNT(*) không có tham số và không hỗ trợ việc sử dụng DISTINCT . Nó cũng không yêu cầu biểu thức (vì nó không sử dụng thông tin về bất kỳ cột cụ thể nào).

OVER ( [ <partition_by_clause> ] chia tập hợp kết quả được tạo ra bởi FROM mệnh đề thành các phân vùng mà hàm được áp dụng. Nếu không được chỉ định, hàm sẽ coi tất cả các hàng của tập hợp kết quả truy vấn là một nhóm duy nhất.

Ví dụ 1 - Cách sử dụng cơ bản

Dưới đây là một ví dụ cơ bản cho thấy chức năng này hoạt động như thế nào:

USE WideWorldImportersDW;
SELECT COUNT_BIG(*) AS 'Row Count' 
FROM Fact.[Order];

Kết quả:

+-------------+
| Row Count   |
|-------------|
| 231412      |
+-------------+

Trong trường hợp này, có 231412 hàng trong Fact. [Order] bảng.

Trong trường hợp này, tôi có thể đã sử dụng COUNT() để trả về cùng một kết quả, vì số hàng đủ nhỏ cho một int để xử lý.

Ví dụ 2 - Tập hợp Kết quả Lớn hơn

Lợi ích thực sự của việc sử dụng COUNT_BIG() là khi tập hợp kết quả của bạn lớn hơn nhiều so với ví dụ trước.

Ví dụ:

SELECT COUNT_BIG(*) AS 'Row Count' 
FROM ReallyBigTable;

Kết quả:

+-----------------+
| Row Count       |
|-----------------|
| 9147483648      |
+-----------------+

Trong trường hợp này, số hàng quá lớn đến mức int sẽ không thể xử lý nó. May mắn thay, chúng tôi có thể sử dụng COUNT_BIG() , vì nó trả về kết quả là bigint .

Các ví dụ khác

Để biết thêm ví dụ, hãy xem Cách làm COUNT() Hoạt động trong SQL Server. Bài viết đó cung cấp nhiều ví dụ hơn là được liệt kê ở đây, tất cả đều có thể áp dụng cho COUNT_BIG() .

Một giải pháp thay thế:APPROX_COUNT_DISTINCT ()

Nếu đang làm việc với các tập dữ liệu rất lớn, bạn có thể cân nhắc sử dụng APPROX_COUNT_DISTINCT() thay vì COUNT_BIG(DISTINCT ) trong vài trường hợp.

APPROX_COUNT_DISTINCT() trả về một giá trị gần đúng, thay vì một giá trị chính xác. Tuy nhiên, nó được thiết kế để đáp ứng nhanh hơn nhiều so với COUNT_BIG() , vì vậy nó có thể hữu ích trong những thời điểm mà khả năng phản hồi quan trọng hơn độ chính xác.

Nó được thiết kế để trả về các giá trị duy nhất, không rỗng, vì vậy nó sẽ chỉ phù hợp cho những thời điểm mà bạn thường sử dụng DISTINCT mệnh đề với COUNT_BIG() .

Cũng lưu ý rằng, tại thời điểm viết APPROX_COUNT_DISTINCT() đang ở trạng thái xem trước công khai.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHỌN DISTINCT trên một cột

  2. Ảnh chụp nhanh cơ sở dữ liệu SQL Server -4

  3. Giải pháp DevOps để Tự động hóa Phát triển Cơ sở dữ liệu

  4. Cách cài đặt SQL Server trên Red Hat 8

  5. Vô hiệu hoá Tài khoản SA trong SQL Server (Ví dụ T-SQL)