COUNT (Transact-SQL)
Devuelve el número de elementos de un grupo. COUNT funciona como COUNT_BIG. La única diferencia entre ambas funciones está en los valores devueltos. COUNT siempre devuelve un valor de tipo de datos int. COUNT_BIG siempre devuelve un valor de tipo de datos bigint. Puede ir seguida de la cláusula OVER.
Convenciones de sintaxis de Transact-SQL
Sintaxis
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
Argumentos
- ALL
Aplica la función de agregado a todos los valores. ALL es el valor predeterminado.
- DISTINCT
Especifica que COUNT devuelva el número de valores únicos no NULL.
- expression
Es una expression de cualquier tipo excepto text, image o ntext. No se permite utilizar funciones de agregado ni subconsultas.
*
Especifica que se deben contar todas las filas para devolver el número total de filas de una tabla. COUNT(*) no acepta parámetros y no se puede utilizar con DISTINCT. COUNT(*) no requiere un parámetro expression porque, por definición, no utiliza información sobre ninguna columna específica. COUNT(*) devuelve el número de filas de una tabla especificada sin deshacerse de las duplicadas. Cuenta cada fila por separado. Se incluyen las filas que contienen valores NULL.Importante: No se admiten agregados Distinct, por ejemplo AVG(DISTINCT column_name), COUNT(DISTINCT column_name), MAX(DISTINCT column_name), MIN(DISTINCT column_name) y SUM(DISTINCT column_name) cuando se utilizan CUBE o ROLLUP. Si se utilizan, el SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) de Microsoft devuelve un mensaje de error y cancela la consulta.
Tipos de valor devueltos
int
Notas
COUNT(*) devuelve el número de elementos de un grupo. Se incluyen valores NULL y duplicados.
COUNT(ALL expression) evalúa expression en todas las filas del grupo y devuelve el número de valores no NULL.
COUNT(DISTINCT expression) evalúa expression en todas las filas del grupo y devuelve el número de valores no NULL únicos.
Si los valores devueltos son superiores a 2^31-1, COUNT genera un error. En su lugar, utilice COUNT_BIG.
Ejemplos
A. Usar COUNT y DISTINCT
En el ejemplo siguiente se muestra el número de cargos diferentes que puede tener un empleado que trabaja en Adventure Works Cycles.
USE AdventureWorks;
GO
SELECT COUNT(DISTINCT Title)
FROM HumanResources.Employee;
GO
Éste es el conjunto de resultados.
-----------
67
(1 row(s) affected)
B. Usar COUNT(*)
En el ejemplo siguiente se muestra el número total de empleados que trabajan en Adventure Works Cycles.
USE AdventureWorks;
GO
SELECT COUNT(*)
FROM HumanResources.Employee;
GO
Éste es el conjunto de resultados.
-----------
290
(1 row(s) affected)
C. Usar COUNT(*) con otros agregados
En el ejemplo siguiente se muestra que COUNT(*)
se puede combinar con otras funciones de agregado de la lista seleccionada.
USE AdventureWorks;
GO
SELECT COUNT(*), AVG(Bonus)
FROM Sales.SalesPerson
WHERE SalesQuota > 25000;
GO
Éste es el conjunto de resultados.
----------- ---------------------
14 3472.1428
(1 row(s) affected)
Vea también
Referencia
Funciones de agregado (Transact-SQL)
COUNT_BIG (Transact-SQL)
OVER (cláusula de Transact-SQL)