Base de datos
La cláusula GROUP BY
La clausula GROUP BY combina los registros con valores idénticos en un único registro. Para cada registro se puede crear un valor agregado si se incluye una función SQL agregada, como por ejemplo Sum o Count, en la instrucción SELECT. Su sintaxis es:
||
|SELECT [ALL | DISTINCT ] |
| [{,}] |
|[{,}]|
|FROM | |
| [{,|}] |
|[WHERE [{ AND|OR }]] |
|[GROUP BY [{,}]]|
|[HAVING [{ AND|OR }]] |
|[ORDER BY | [ASC | DESC] |
| [{,| [ASC | DESC ]}]]|
GROUP BY es opcional. Si se utiliza GROUP BY pero no existe una función SQL agregada en la instrucciónSELECT se obtiene el mismo resultado que con una consulta SELECT DISTINCT. Los valores Null en los camposGROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalúan en ninguna de las funciones SQL agregadas.
Todos los campos de la lista decampos de SELECT deben incluirse en la cláusula GROUP BY o como argumentos de una función SQL agregada.
| |
|SELECT marca, modelo, SUM(numero_kilometros) |
|FROM tCoches|
|GROUP BY marca, modelo |
La cláusula HAVING
Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por lacláusula GROUP BY que satisfaga las condiciones de la cláusula HAVING. Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la cláusula HAVING para filtrar los registros una vez agrupados.
HAVING es similar a WHERE, determina qué registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van amostrar. HAVING permite el uso de funciones agregadas.
| |
|SELECT marca, modelo, SUM(numero_kilometros) |
|FROM tCoches|
|WHERE marca 'BMW' |
|GROUP BY marca, modelo |
|HAVING SUM(numero_kilometros)>100000...
Regístrate para leer el documento completo.