Programación en castellano
Inicio > Tutoriales > MySQL > Tutorial básico de MySQL
-Tutoriales

Tutorial básico de MySQL

Autor: MySQL AB
Traductor: MySQL Hispano

En esta página:


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 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 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)

El número de animalitos por combinación de especie y sexo:

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)

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
    -> 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)

O bien, si deseamos el número de animalitos por sexo, y cuyo sexo es conocido:

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

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: juegos gratis | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | decoración web | gifs animados