ARITMÉTICA CON SQL

¿Quién no ha echado en falta el saber el total de ingresos o de gastos de esta fecha a esta otra?. ¿Quién no ha deseado saber la media de ventas de los comerciales en este mes?. ¡Tranquilos!: el lenguaje SQL nos permitirá resolver estas y otras cuestiones de forma muy sencilla, ya que posee una serie de funciones de carácter aritmético:

 

 

SUMAS O TOTALES

 

Para sumar las cantidades numéticas 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. Veamos algunos ejemplos:

 

SELECT SUM(unidades) FROM pedidos;

 

Retorna el total de unidades pedidas (la suma de todos los valores almacenados en el campo 'unidades' de la tabla 'pedidos'). Este resultado se toma como un nuevo campo en el RecordSet.

 

SELECT SUM(ingresos-gastos) AS saldo FROM diario;

 

Retorna el saldo final de una tabla llamada 'diario'. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'saldo'.

 

SELECT SUM(unidades) AS total FROM pedidos WHERE fecha=Now();

 

Retorna el total de unidades pedidas hoy. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'total'.

 

 

 

PROMEDIOS O MEDIAS ARITMÉTICAS

 

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.

 

He aquí algunos ejemplos:

 

SELECT AVG(unidades) FROM PEDIDOS;

 

Retorna el promedio de unidades pedidas (la media de todos los valores almacenados en el campo 'unidades' de la tabla 'pedidos'). Este resultado se toma como un nuevo campo en el RecordSet.

 

SELECT AVG(ingresos-gastos) AS saldo_medio FROM diario;

 

Retorna el saldo medio de una tabla llamada 'diario'. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'saldo_medio'.

 

SELECT AVG(unidades) AS media FROM pedidos WHERE fecha=Now();

 

Retorna el promedio de unidades pedidas hoy. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'media'.

 

 

VALORES MÍNIMOS Y MÁXIMOS

 

También 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)

 

He aquí algunos ejemplos:

 

SELECT MIN(unidades) AS minimo FROM pedidos;

 

Retorna el pedido más pequeño y lo refleja en el campo 'minimo'.

 

SELECT MAX(unidades) AS maximo FROM pedidos WHERE fecha=Now();

 

Retorna el pedido más grande de hoy y lo refleja en el campo 'maximo'.

 

SELECT MAX(gastos) AS maximo FROM diario;

 

Retorna el gasto más costoso reflejado en el diario contable, y lo representa en el campo 'maximo'.

 

 

CONTAR REGISTROS

 

Otra operación muy común es realizar un recuento de registros. Aunque a primera vista pueda parecer poco práctico, la realidad es bien distinta. ¿Q quién no le gustaría conocer cuántos pedidos se han realizado hoy?. ¿O comprobar cuántos pagos se han realizado por una determinada cantidad?. ¿O saber cuántos clientes cumplen hoy años, se jubilan, son menores o mayores de edad, tienen alguna deuda, viven en esta ciudad o en tal otra, tienen teléfono móvil, están casados o solteros, etc.?. Para conocer cuántos registros hay utilizaremos la función COUNT, cuya sintaxis es la siguiente:

 

COUNT(expresión)

 

La función COUNT retorna el número de registros indicados en la expresión.

 

He aquí algunos ejemplos:

 

SELECT COUNT(*) AS num_pedidos FROM pedidos WHERE fecha=Now();

 

Retorna el número de pedidos realizados hoy. Este resultado se toma como un nuevo campo en el RecordSet y se le llama 'num_pedidos'.

 

SELECT COUNT(*) AS casados FROM clientes WHERE casado=True;

 

Retorna el número de clientes casados. Este resultado se toma como un nuevo campo y se le llama 'casados'.

 

SELECT COUNT(*) AS num_pagos FROM diario WHERE gastos=25594;

 

Retorna el número de pagos por un importe equivalente a 25594. Este resultado se toma como un nuevo campo en el RecordSet, y se le llama 'num_pagos'.

 

SELECT SUM(unidades) AS total, AVG(unidades) AS media, COUNT(*) AS registros, MAX(unidades) AS maximo, MIN(unidades) AS minimo FROM pedidos WHERE fecha BETWEEN #1/1/97# AND #6/30/97#;

 

Retorna el total, la media, el máximo y el mínimo de unidades pedidas, y el número de pedidos realizados, durante el primer semestre de 1.997.