FUNCIONES DE AGREGADOS EN SQL Con las funciones de agregado de SQL, se pueden determinar varias estadísticas relacionadas con conjuntos de valores. Estas funciones se pueden utilizar en las consultas, para agregar expresiones en la propiedad SQL de un objeto QueryDef o al crear un objeto de conjunto de registros basado en una consulta SQL. 1. La función SUM (Sumas O Totales):
a. Para sumar las cantidades numéricas contenidas en un determinado campo, hemos de utilizar la función SUM, cuya sintaxis es la siguiente: SUM (expresión). Donde 'expresión' puede representar un campo o una operación con algún campo. La función SUM retorna el resultado de la suma de la expresión indicada en todos los registros que son afectados por la consulta. b. Devuelve la suma de un conjunto de valores de un campo específico de una consulta Sum (expr): El marcador de posición expr representa una expresión de cadena (expresión de cadena: expresión que evalúa una secuencia de caracteres contiguos. Los elementos de la expresión pueden ser: funciones que devuelven una cadena o un tipo Variant (VarType 8) de cadena; un tipo literal, constante, variable o Variant de cadena.) que identifica el campo que contiene los datos numéricos que desea sumar o una expresión que realiza un cálculo utilizando los datos de ese campo. Los operandos de expr pueden incluir el nombre de un campo de tabla, una constante o una función (que puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las otras funciones de agregado de SQL). Ejemplo: SELECT sum(cantidad*valorUnitario) FROM producto; 2. Funciones MIN y MAX (Valores Mínimos Y Máximos):
a. Es posible conocer el valor mínimo o máximo de un campo, mediante las funciones MIN y MAX, cuyas sintaxis son las siguientes: * MIN(expresión) * MAX(expresión)
b. Devuelven el mínimo o el máximo de un conjunto de valores de un campo especificado en una consulta. Puede utilizar Mín y Máx para determinar los valores superiores e inferiores de un campo basándose en la agregación especificada o agrupación. c. La función agregada de SQL MAX nos permite seleccionar el más alto (máximo) de un cierto valor para la columna. Ejemplos: •
SELECT max(valorUnitario) FROM producto;
•
SELECT min(valorUnitario)FROM producto;
3. La función AVG (Promedios O Medias Aritméticas): a. Para averiguar el promedio de unas cantidades utilizaremos la
función AVG, cuya sintaxis es la siguiente: AVG (expresión). La función AVG retorna el promedio o media aritmética de la expresión especificada, en todos los registros afectados por la consulta. Esto es lo mismo que realizar una suma (SUM) y, después, dividir el resultado entre el número de registros implicados. Ejemplo: •
SELECT avg (cantidad) FROM producto;
b. Calcula la media aritmética de un conjunto de valores de un campo específico de una consulta. Sintaxis Prom(expr) El promedio calculado por Prom es la media aritmética (la suma de los valores dividida entre el número de valores). Puede utilizar Prom, por ejemplo, para calcular el promedio de los gastos de envío. La función Prom (Avg) no incluye ningún campo Null (Null: valor que puede especificarse en un campo o utilizarse en expresiones o
consultas para indicar datos desconocidos o ausentes. En Visual Basic, la palabra clave Null indica un valor Null. Algunos campos, como los de clave principal, no pueden contener Null.) en el cálculo.
4. Función cuenta (Count)
Calcula el número de registros que devuelve una consulta. Sintaxis Cuenta(expr) Puede utilizar Cuenta para contar el número de registros de una consulta base. Por ejemplo, puede utilizar Cuenta para contar el número de pedidos enviados a un determinado país. Aunque expr puede realizar el cálculo de un campo, Cuenta cuenta simplemente el número de registros, sin importar los valores que estén almacenados en los mismos. Ejemplo: •
SELECT count(nombre) FROM producto;
5. Función desviación estándar ( StDev, StDevP)
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: StDev(expr) StDevP(expr) En donde expr representa el nombre del campo que contiene los datos que desean evaluarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). 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). Ejemplo: SELECT stdev(valorUnitario) FROM producto; 6. Función Var, VarP: Devuelve una estimación de la varianza de una población (sobre el total de los registros) o una muestra de la población (muestra aleatoria de registros) sobre los valores de un campo. Su sintaxis es: Var(expr) VarP(expr) VarP evalúa una población, y Var evalúa una muestra de la población. Expr el nombre del campo que contiene los datos que desean evaluarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL) Si la consulta contiene menos de dos registros, Var y VarP devuelven Null (esto indica que la varianza no puede calcularse). Puede utilizar Var y VarP en una expresión de consulta o en una Instrucción SQL. Devuelven un valor de campo del primer o del último registro en el conjunto de resultados devueltos por una consulta. 7. Function First, last: First(expr) Last(expr) El marcador de posición expr representa una expresión de cadena que identifica el campo que contiene los datos que desea utilizar o una expresión que realiza un cálculo utilizando los datos de ese campo. Los operandos de expr pueden incluir el nombre de un campo de tabla, una constante o una función (que puede ser intrínseca o definida por el usuario, pero no puede ser ninguna de las otras funciones de agregado de SQL).
Agrupamiento de Registros:
1.
GROUP BY
Combina los registros con valores idénticos, en la lista de campos especificados, en un único registro. Para cada registro se crea un valor sumario si se incluye una función SQL agregada, como por ejemplo Sum o Count, en la instrucción SELECT. Su sintaxis es: GROUP BY es opcional. Los valores de resumen se omiten si no existe una función SQL agregada en la instrucción SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalúan en ninguna de las funciones SQL agregadas. 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. A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de campos GROUP BY puede referirse a cualquier campo de las tablas que aparecen en la cláusula FROM, incluso si el campo no esta incluido en la instrucción SELECT, siempre y cuando la instrucción SELECT incluya al menos una función SQL agregada. 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. Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registro agrupado por la cláusula GROUP BY que satisfaga las condiciones de la cláusula HAVING. 2. HAVING es similar a WHERE, determina qué registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuáles de ellos se van a mostrar.
WEBGRAFIA
1. http://basededatos.umh.es/sql/sql04.htm#SUM 2. http://basededatos.umh.es/sql/sql04.htm#COUNT 3. http://basededatos.umh.es/sql/sql04.htm#GROUPBY
4. http://www.mailxmail.com/curso/informatica/sql/capitulo28.htm 5. http://office.microsoft.com/es-es/access/HA012315013082.aspx 6. www.sql-tutorial.net/SQL-MAX
EJERCICIO
CONSULTAS 1. Seleccionar el producto cuyo valor sea mayor 3000
SELECT nombre, min (valorUnitario) FROM productos GROUP BY nombre, valorUnitario HAVING min (valorUnitario)<3000;
2. Seleccionar el producto cuyo valor sea mínimo 3000
SELECT nombre, min (valorUnitario) FROM productos GROUP BY nombre, valorUnitario HAVING min (valorUnitario)<3000;
3. Determinar el promedio de productos que existen.
SELECT avg(cantidad) FROM productos;
4. Determinar la desviación estándar del producto.
SELECT stdev(valorUnitario) FROM productos;
5. Establecer el valor total del STOCK.
SELECT sum(cantidad*valorUnitario) FROM productos;
6. Contar cuantos tipos de productos existen.
SELECT count(cantidad) FROM productos;