Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SQL permite combinar en un único registro, registros con valores idénticos en la lista de campos que se
especifique. Una vez indicado por qué campo/s queremos agrupar la información, se pueden utilizar funciones
de agregación que realizarán operaciones resumen sobre el grupo de registros (cuenta de registros, suma,
media aritmética, máximo o mínimo, etc.).
Para indicar que se desea realizar un agrupamiento de registros se utiliza la cláusula Group By indicando
aquellos campos por los que se desee agrupar la información.
Las funciones de agregación más importantes se muestran en la tabla, todas ellas, excepto COUNT(*) ignoran
cualquier nulo en sus argumentos.
Función Descripción
SUM Utilizada para devolver la suma de todos los valores de un campo determinado
Group By
Group By combina en un único registro los registros los valores idénticos en la lista de campos especificada.
Suele ir acompañada de alguna función resumen o de agregado. Si se incluye alguna función de agregado en el
comando SELECT, se creará un valor resumen para cada registro si no se incluye ninguna función agregada los
valores de resumen se omiten.
El orden de los nombres de los campos determinará los niveles de agrupamiento, del más alto al más
bajo.
GROUP BY puede hacer referencia a cualquier campo de la tabla, incluso sin que esté presente en la cláusula
SELECT siempre que el comando SELECT haga referencia a alguna función de agregado de SQL.
Todos los campos de la lista de campos de SELECT deben o bien incluirse en la cláusula GROUP BY o
como argumentos de una función SQL agregada
• Los valores Null en los campos GROUP BY se agrupan y no se omiten, pero, no se evalúan en
ninguna de las funciones SQL agregadas.
• Para excluir aquellas filas que no se desea agrupar se utiliza la cláusula WHERE y, para excluir las
filas una vez agrupadas se utiliza la cláusula HAVING.
• Los datos tipo Memo, Objetos OLE, etc., no se pueden agrupar.
13
“Lista los números de departamento y la suma de los salarios de cada uno de ellos”
daría un error o un resultado incorrecto, ya que en cada departamento el nombre del empleado no se puede
agrupar por departamento.
HAVING elimina los grupos para los cuales la expresión da como resultado FALSO o DESCONOCIDO. Por
ejemplo,
“Lista la suma de los sueldos agrupada por departamentos, pero sólo aquellos en los que la suma sea
mayor que 10000, o que el departamento sea el 30”
Funciones de agregado
14
Avg(expr)
En donde expr representa el campo que contiene los datos numéricos para los que se desea calcular la media
o una expresión que realiza un cálculo utilizando los datos de dicho campo.
20 NULL
30 550.
Count
Calcula el número de registros devueltos por una consulta.
Count(expr)
En donde expr contiene el nombre del campo que desea contar. Los operandos de expr pueden incluir el
nombre de un campo de una tabla, una constante o una función que no puede ser una función agregada de
SQL. Puede contar cualquier tipo de datos.
Aunque expr puede realizar un cálculo sobre un campo, Count simplemente cuenta el número de registros sin
tener en cuenta qué valores se almacenan en los registros. La función Count no cuenta los registros que tienen
campos null a menos que expr sea el carácter comodín asterisco (*). Count(*) es considerablemente más
rápida que Count(Campo).
15
SELECT Count(FechaEnvío & Transporte) AS Total
FROM Pedidos;
Max, Min
Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una
consulta. Su sintaxis es:
Min(expr)
Max(expr)
Expr pueden incluir el nombre de un campo de una tabla, una constante o una función que no sea una de las
funciones agregadas de SQL.
“Lista el sueldo mínimo, máximo y medio de los empleados y el número total de éstos”
Sum
Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta.
Desviación estándar
Devuelve estimaciones de la desviación estándar para la población (el total de los registros de la tabla) o una
muestra de la población representada (muestra aleatoria) . Su sintaxis es:
Oracle
• STDDEV
MySQL
• STD(expr), STDDEV(expr)
Retorna la desviación estándard de expr. Esta es una extensión del estándar SQL. La forma STDDEV()
de esta función se proporciona para compatibilidad con Oracle. Desde MySQL 5.0.3, la función
estándar SQL STDDEV_POP() puede usarse en su lugar.
16
• STDDEV_POP(expr)
Retorna la desviación estándar de expr (la raíz cuadrada de VAR_POP()). Esta función se añadió en
MySQL 5.0.3. Antes de 5.0.3, puede usar STD() o STDDEV(), que son equivalentes pero no SQL
estándar.
• STDDEV_SAMP(expr)
Retorna la muestra de la desviación estándar de expr (la raíz cuadrada de VAR_SAMP(). Esta función
se añadió en MySQL 5.0.3.
SQL Server
• StDev(expr)
• StDevP(expr)
StDevP evalúa una población, y StDev evalúa una muestra de la población. Si la consulta contiene
menos de dos registros (o ningún registro para StDevP), estas funciones devuelven un valor Null (el
cual indica que la desviación estándar no puede calcularse).
Otras funciones
La implementación de las funciones depende del SGBD, casi todos incluyen un gran número de funciones para
trabajar con números, fechas y cadenas de caracteres.
En la lista que viene a continuación, se indican las funciones más habituales con la sintaxis utilizada por el
SGBD Oracle.
- MOD (Atributo, Atributo2): resto de dividir Atributo entre Atributo2. Si Atributo2=0 devuelve Atributo
Atributo2
- POWER (Atributo, Atributo2): Atributo
17
- TRUNC (Atributo [, m]): trunca Atributo a m dígitos
- SIGN (Atributo):
Si Atributo < 0 devuelve (-1)
Si Atributo = 0 devuelve 0
Si Atributo > 0 devuelve 1
- SQRT (Atributo): raíz cuadrada del valor del Atributo
- LTRIM (Atributo [, caracter]): elimina el carácter caracter (o blancos) por la izquierda hasta encontrar el
primer carácter que no está en caracter.
- RTRIM (Atributo [, caracter]): elimina el carácter caracter (o blancos) por la derecha hasta encontrar el
primer carácter que no está en caracter.
- SUBSTR (Atributo, m[, n]): devuelve una porción de Atributo comenzando en el carácter m y en n
caracteres de longitud.
18
Resultado: 18-MAY-03 si el día actual es 18 de marzo de 2003
- next_day(d, day): la fecha del día especificado de la semana después del día actual
Funciones de conversión
- TO_CHAR (Atributo[, formato]): convierte Atributo (numérico o fecha) a un string con el formato especificado.
Posibles máscaras para fecha: Y, YY, YYY, YYYY, YEAR (en letra)
Ejercicios
1. Buscar y documentar las funciones más comunes para los SGBD SQL Server.
2. Obtener el último empleado por orden alfabético.
3. ¿Cuáles son los salarios más altos y más bajos de cada departamento?
máximo mínimo depto
5000.00 1300.00 10
3000.00 800.00 20
2850.00 950.00 30
4. Salarios de los departamentos en los que la media supere 2000
19
5. ¿Cuántos empleados tiene cada jefe?
7. Agrupa a los empleados por año de ingreso en la empresa. ¿Cuántos empleados entraron cada año?
20