Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как работи COUNT_BIG() в SQL Server

В SQL Server, COUNT_BIG() функцията връща броя на елементите, намерени в група. Можете да го използвате, за да разберете колко реда има в таблица или набор от резултати.

Тази функция работи подобно на COUNT() функция. Разликата е, че COUNT() връща резултата си като int , докато COUNT_BIG() връща резултата си като голям .

Следователно COUNT_BIG() може да е полезно, ако очаквате вашият набор от резултати да има много голям брой редове (т.е. по-голям от 2 147 483 647).

Синтаксис

Синтаксисът е така:

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

ALL прилага агрегатната функция към всички стойности. Това е стойността по подразбиране.

DISTINCT указва, че функцията връща броя на уникалните ненулеви стойности.

expression е израз от всякакъв тип. Обобщени функции и подзаявки не се поддържат в израза.

* указва, че всички редове трябва да бъдат преброени и върнати, включително дублиращи се редове и редове, които съдържат нулеви стойности. COUNT(*) не приема параметри и не поддържа използването на DISTINCT . Освен това не изисква израз параметър (тъй като не използва информация за конкретна колона).

OVER ( [ <partition_by_clause> ] разделя резултатния набор, произведен от FROM клауза в дялове, към които се прилага функцията. Ако не е посочено, функцията третира всички редове от резултата от заявката като една група.

Пример 1 – Основна употреба

Ето основен пример, показващ как работи тази функция:

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

Резултат:

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

В този случай има 231412 реда в Факт.[Поръчка] таблица.

В този случай бих могъл да използвам COUNT() за да върне същия резултат, защото броят на редовете е достатъчно малък за int да се справя.

Пример 2 – По-голям набор от резултати

Истинската полза от използването на COUNT_BIG() е, когато вашият набор от резултати е много по-голям от предишния пример.

Пример:

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

Резултат:

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

В този случай броят на редовете е толкова голям, че еint не би могъл да се справи. За щастие можем да използваме COUNT_BIG() , защото връща резултата си като голям .

Още примери

За повече примери вижте Как COUNT() Работи в SQL Server. Тази статия предоставя повече примери, отколкото е изброено тук, всички от които са приложими и за COUNT_BIG() .

Алтернатива:APPROX_COUNT_DISTINCT()

Ако работите с много големи набори от данни, може да помислите да използвате APPROX_COUNT_DISTINCT() вместо COUNT_BIG(DISTINCT ) в някои случаи.

APPROX_COUNT_DISTINCT() връща приблизителна стойност, а не точна стойност. Той обаче е проектиран да бъде много по-отзивчив от COUNT_BIG() , така че може да бъде полезно за моменти, когато отзивчивостта е по-важна от прецизността.

Той е проектиран да връща уникални, различни от нулеви стойности, така че би било подходящо само за моменти, когато обикновено използвате DISTINCT клауза с COUNT_BIG() .

Също така имайте предвид, че към момента на писане на APPROX_COUNT_DISTINCT() е в състояние на публичен преглед.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да генерирате план за изпълнение в SQL Server

  2. SQL Server Висока наличност:Добавете нов диск към съществуващ екземпляр на клъстер за отказване

  3. Преобразуване на номер на месец в името на месеца в SQL Server (T-SQL)

  4. Разбиране на функцията PIVOT в T-SQL

  5. Как работи функцията REPLICATE() в SQL Server (T-SQL)