1.9. Consultas avanzadas: agrupaciones
Mediante el desglose de datos de una tabla, en función de algún campo concreto, podemos calcular estadísticas sobre cada categoría. El comando GROUP BY
permite realizar agrupaciones de los datos de las tablas según los criterios que establezcamos, y es posible combinar estas clasificaciones con operadores de agregación como COUNT
,
MAX
,
MIN
,
AVG
o
SUM
.
SELECT campo1, campo2,..., campon FROM tabla GROUP BY atribut;
Por ejemplo, solicitamos las especies presentes en nuestra base de datos:
mysql> SELECT especie FROM genes GROUP BY especie; +-----------------+ | especie | +-----------------+ | D. melanogaster | | H. sapiens | +-----------------+ 2 rows in set (0.00 sec)
Posteriormente, podemos contar el número exacto de ejemplos de cada especie:
mysql> SELECT especie,COUNT(*) FROM genes GROUP BY especie; +-----------------+----------+ | especie | COUNT(*) | +-----------------+----------+ | D. melanogaster | 2 | | H. sapiens | 2 | +-----------------+----------+ 2 rows in set (0.00 sec)
Ahora obtenemos las estadísticas básicas sobre la longitud de los genes:
mysql> SELECT especie, cromosoma, inicio, final, final-inicio -> FROM genes; +-----------------+-----------+-----------+-----------+--------------+ | especie | cromosoma | inicio | final | final-inicio | +-----------------+-----------+-----------+-----------+--------------+ | D. melanogaster | chr3R | 20477248 | 20479098 | 1850 | | D. melanogaster | chr2L | 476437 | 479046 | 2609 | | H. sapiens | chr12 | 121416548 | 121440312 | 23764 | | H. sapiens | chr8 | 128748314 | 128753678 | 5364 | +-----------------+-----------+-----------+-----------+--------------+ 4 rows in set (0.00 sec) mysql> SELECT especie, AVG(final-inicio), MIN(final-inicio), -> MAX(final-inicio) FROM genes GROUP BY especie; +-----------------+-------------------+-------------------+-------------------+ | especie | AVG(final-inicio) | MIN(final-inicio) | MAX(final-inicio) | +-----------------+-------------------+-------------------+-------------------+ | D. melanogaster | 2229.5000 | 1850 | 2609 | | H. sapiens | 14564.0000 | 5364 | 23764 | +-----------------+-------------------+-------------------+-------------------+ 2 rows in set (0.00 sec)