Curso
¿Qué es la función COUNT() ?
La función COUNT() devuelve el número de filas que coinciden con un criterio.
COUNT() y su sintaxis
La sintaxis básica de COUNT() es la siguiente.
SELECT COUNT(column_name)
FROM table_name;
Las variaciones de la sintaxis consiguen objetivos diferentes.
- La sintaxis de
COUNT(*)nos permite contar el número de filas de una tabla - La sintaxis de
COUNT(DISTINCT column)nos permite contar el número de valores distintos de una columna - La sintaxis de
COUNT(CASE WHEN condition THEN column END)nos permite contar el número de valores que cumplen condiciones.
COUNT(), utilizado con GROUP BY, es útil para contar el número de filas que pertenecen a cada grupo.
COUNT(), utilizado con HAVING, es útil para filtrar grupos según el número de filas que tengan.
Los ilustraremos con los ejemplos siguientes.
COUNT() , ejemplos
Ejemplo 1: contar el número de filas con COUNT(*)
La tabla llamada productos contiene todos los productos que vende una empresa. La cláusula COUNT(*) nos permite calcular el número de filas de la tabla.
SELECT
COUNT(*) AS number_of_rows
FROM products
|
|
|
321 |
Ejemplo 2: contar valores únicos con COUNT(DISTINCT …)
La sintaxis de COUNT(DISTINCT column) nos permite contar el número de valores únicos de una columna.
Por ejemplo, cada producto tiene una marca asociada en la tabla products. Podemos contar el número de productos y marcas únicos en la tabla.
SELECT
COUNT(DISTINCT product_id) AS unique_product_count,
COUNT(DISTINCT brand_id) AS unique_brand_count
FROM products
|
|
|
|
321 |
9 |
Ejemplo 3: contar las filas que cumplen una condición mediante COUNT() con CASE WHEN
La sintaxis de COUNT(CASE WHEN condition THEN column END) nos permite calcular el número de filas que cumplen una condición.
Por ejemplo, en la tabla de productos, cada producto tiene un list_price. Podemos calcular cuántos productos son "expensive" (tienen un precio de catálogo superior a 500 $) o no.
SELECT
COUNT(CASE WHEN list_price >= 500 THEN product_id END) AS expensive_product_count,
COUNT(CASE WHEN list_price < 500 THEN product_id END) AS cheap_product_count
FROM products
|
|
|
|
213 |
108 |
Ejemplo 4: contar filas en grupos utilizando COUNT() con GROUP BY
COUNT() puede utilizarse con GROUP BY para averiguar el número de filas de cada grupo.
Por ejemplo, la tabla de productos contiene modelos de bicicleta de 2016 a 2019. Para hallar la distribución de la bicicleta, podemos utilizar COUNT(product_id) y GROUP BY model_year para contar el número de productos de cada año.
SELECT
model_year,
COUNT(product_id) AS product_count
FROM products
GROUP BY model_year
|
|
|
|
2016 |
26 |
|
2017 |
85 |
|
2018 |
204 |
|
2019 |
6 |
Ejemplo 5: filtrar por grupos utilizando COUNT() con GROUP BY y HAVING
En el ejemplo 4, vemos que COUNT() puede utilizarse con GROUP BY. Podemos utilizar la declaración HAVING para filtrar por grupos utilizando el número de filas de ese grupo.
Por ejemplo, para hallar el número de años que tienen menos de 50 productos, podemos utilizar la siguiente sintaxis.
SELECT
model_year
FROM products
GROUP BY model_year
HAVING COUNT(product_id) < 50
|
|
|
2016 |
|
2019 |
Requisitos técnicos
COUNT() es una función disponible en todas las versiones de SQL modernas.
