Las funciones de agrupación operan sobre conjuntos de filas para dar un resultado por grupo. Así tenemos para atributos numéricos
AVG da un amedia
SUM suma los valores
MIN calcula el valor mínimo
MAX calcula el valor máximo
Las funciones de agrupación ignoran los valores NULL en las consultas, aunque se puede utilizar NVL (en Oracle) para forzar a que considere a NULL como un valor determinado.
SELECT AVG(NVL(sueldo,0))
FROM empleado
Calcula el sueldo medio de los empleados, considerando 0 los valores que sean NULL
Mediante la cláusula GROUP BY se dividen las filas que devuelve una consulta en pequeños grupos. Cuando lo utilicemos hay que tener en cuenta que todas las columnas que pongamos en el SELECT que no estén en el GROUP BY, han de estar en una función de agrupación.
Así es correcto
SELECT departamento, AVG(sueldo)
FROM empleados
GROUP BY departamento
Y no lo es
SELECT departamento, sueldo
FROM empleados
GROUP BY departamento
Tiene sentido ya que si agrupamos los empleados por departamente ¿el sueldo de cual nos devolvería?
Eso sí, la columna que pongamos en el GROUP BY no ha de estar en el SELECT y podemos utilizar más de una columna. Con GROUP BY no se utiliza WHERE, sino HAVING, que sirve para seleccionar grupos.
SELECT departamento, MAX(sueldo)
FROM empleados
GROUP BY departamento
HAVING MAX(sueldo) > 2000
En este nos selecciona el sueldo máximo agrupado por departamento, siempre y cuando el sueldo sea mayor que 2000
Puedes hacen ping a esta entrada con la dirección http://www.error500.net/cgi-bin/mt/mt-tb.cgi/323 .