sql >> Base de Datos >  >> RDS >> MariaDB

Función COUNT() en MariaDB

En MariaDB, el COUNT() La función agregada devuelve un recuento del número de valores no NULL de una expresión en las filas recuperadas por SELECT declaración.

Datos de muestra

Supongamos que tenemos la siguiente tabla:

SELECT * 
FROM Pets;

Resultado:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
+-------+-----------+---------+---------+------------+

Los siguientes ejemplos usarán el COUNT() función al consultar esta tabla.

Ejemplo

Así es como se cuentan las filas en la tabla anterior:

SELECT COUNT(*)
FROM Pets;

Resultado:

8

Esto nos dice que hay 8 filas en la tabla. Lo sabemos porque usamos el comodín asterisco (* ) para especificar todas las filas y todas las columnas.

Contar una columna específica

También puede especificar una columna para contar. El COUNT() la función solo cuenta no NULL resultados, por lo que si especifica una columna que contiene NULL valores, esos valores no se contarán.

Aquí hay un ejemplo para demostrar lo que quiero decir.

SELECT COUNT(DOB)
FROM Pets;

Resultado:

6

En este caso, las Pets la tabla contiene dos NULL valores en el DOB columna (dos mascotas no han proporcionado su fecha de nacimiento), por lo que COUNT(DOB) devuelve 6, en lugar de 8 cuando usamos COUNT(*) .

El motivo COUNT(*) en el ejemplo anterior devolvió todas las filas, es porque esas dos filas lo hicieron tener datos en las otras columnas.

Resultados filtrados

El COUNT() La función cuenta las filas devueltas por la consulta. Entonces, si filtra los resultados, el resultado de COUNT() reflejará eso.

SELECT COUNT(*)
FROM Pets
WHERE PetName = 'Fluffy';

Resultado:

2

En este caso, hay dos mascotas con el nombre de Fluffy. Por lo tanto, la consulta habría devuelto dos filas y el resultado de COUNT() es 2 .

Contar columnas distintas

Tenemos la opción de agregar el DISTINCT palabra clave para especificar que solo se devuelvan valores distintos (de modo que excluya los duplicados):

SELECT 
    COUNT(PetName) AS "All",
    COUNT(DISTINCT PetName) AS "Distinct"
FROM Pets;

Resultado:

+-----+----------+
| All | Distinct |
+-----+----------+
|   8 |        7 |
+-----+----------+

En este caso, aunque hay ocho PetName valores, solo siete de ellos son distintos (dos son duplicados; tenemos dos mascotas llamadas Fluffy).

El HAVING Cláusula

Puede incluir COUNT() en varias partes de una consulta. No se limita solo a SELECT lista.

Aquí hay un ejemplo que usa COUNT() tanto en HAVING cláusula y el SELECT lista:

SELECT 
    PetTypeId, 
    COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
HAVING COUNT(PetTypeId) > 2
ORDER BY Count DESC;

Resultado:

+-------------+---------+
| PetTypeId   | Count   |
|-------------+---------|
| 3           | 4       |
| 2           | 3       |
+-------------+---------+

Ver SQL COUNT() para principiantes para obtener una explicación más detallada de este ejemplo, así como un ejemplo del uso de COUNT() en una función de ventana.