Está usted en Indice > Construcción > Lenguajes > MySQL > Manual de MySQL > Conteo de Filas
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Enlaces Relacionados

Conteo de Filas
Conteo de Filas
Conteo de Filas

MANUAL DE MYSQL

CONTEO DE FILAS

Las bases de datos son usadas frecuentemente para responder una pregunta, "¿Con qué frecuencia ocurre un cierto tipo de dato en una tabla?". Por ejemplo, tal vez queremos conocer cuántas mascotas tenemos, o cuántas mascotas tiene cada uno de los propietarios.

Contar el número total de animalitos que tenemos es lo mismo que hacer la siguiente pregunta "¿Cuántas filas hay en la tabla mascotas?" ya que hay un registro por mascota. La función COUNT( ) es la que nos ayuda en esta situación.

mysql> SELECT COUNT(*) FROM mascotas;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+
1 row in set (0.00 sec)
Si deseamos conocer cuántas mascotas tiene cada uno de los propietarios, la consulta es la siguiente:
mysql> SELECT propietario, COUNT(*) FROM mascotas GROUP BY propietario ;
+-------------+----------+
| propietario | COUNT(*) |
+-------------+----------+
| Arnoldo     |        2 |
| Benito      |        2 |
| Diana       |        2 |
| Juan        |        1 |
| Omar        |        1 |
| Tomás       |        1 |
+-------------+----------+
6 rows in set (0.00 sec)
Se debe notar que se ha usado una cláusula GROUP BY para agrupar todos los registros de cada propietario. Si no hacemos esto, obtendremos un mensaje de error: mysql> SELECT propietario, COUNT(*) FROM mascotas; ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

En efecto, el uso de la función COUNT( ) en conjunto con la cláusula GROUP BY es muy útil en diversas situaciones. A continuación se muestran algunos ejemplos.

El número de animalitos por especie:


mysql> SELECT propietario, COUNT(*) FROM mascotas;    
ERROR 1140: Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no 
GROUP columns is illegal if there is no GROUP BY clause

mysql> SELECT especie, COUNT(*) FROM mascotas GROUP BY especie ;
+-----------+----------+
| especie   | COUNT(*) |
+-----------+----------+
| Ave       |        2 |
| Gato      |        2 |
| Hamster   |        1 |
| Perro     |        3 |
| Serpiente |        1 |
+-----------+----------+
5 rows in set (0.00 sec)

El número de animalitos por combinación de especie y sexo:
mysql> SELECT sexo, COUNT(*) FROM mascotas GROUP BY sexo:
+------+----------+
| sexo | COUNT(*) |
+------+----------+
| NULL |        1 |
| f    |        4 |
| m    |        4 |
+------+----------+
3 rows in set (0.01 sec)

No es necesario que se obtengan todos los datos de una tabla cuando se usa la función COUNT( ). Por ejemplo, en la consulta anterior, para ver únicamente los datos de perritos y gatitos, la consulta queda de la siguiente manera:

mysql> SELECT especie, sexo, COUNT(*) FROM mascotas GROUP BY especie, sexo ;
+-----------+------+----------+
| especie   | sexo | COUNT(*) |
+-----------+------+----------+
| Ave       | NULL |        1 |
| Ave       | f    |        1 |
| Gato      | f    |        1 |
| Gato      | m    |        1 |
| Hamster   | f    |        1 |
| Perro     | f    |        1 |
| Perro     | m    |        2 |
| Serpiente | m    |        1 |
+-----------+------+----------+
8 rows in set (0.00 sec)

O bien, si deseamos el número de animalitos por sexo, y cuyo sexo es conocido:
mysql> SELECT especie, sexo, COUNT(*) FROM mascotas
    -> WHERE especie="Perro" OR especie="Gato" 
    -> GROUP BY especie, sexo;
+---------+------+----------+
| especie | sexo | COUNT(*) |
+---------+------+----------+
| Gato    | f    |        1 |
| Gato    | m    |        1 |
| Perro   | f    |        1 |
| Perro   | m    |        2 |
+---------+------+----------+
4 rows in set (0.00 sec)

 



Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 04-07-2008 a las 17:58:20