FUNCIONES MATEMÁTICAS
SUM
Sintaxis
SUM([DISTINCT] expr)
Descripción
Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Donde expr representa el nombre del campo que contiene 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.
Ejemplos
Indica la cantidad total de presupuesto que la empresa invierte en pagar la nomina de sus empleados.
SELECT SUM(SALARY) FROM EMPLOYEES;
+-------------+
| SUM(SALARY) |
+-------------+
| 691400 |
+-------------+
Señala cuanto se gasta la empresa en pagar los sueldos del departamento de "Ventas" .
SELECT SUM(SALARY) FROM EMPLOYEES WHERE DEPARTMENT_ID =80;
+-------------+
| SUM(SALARY) |
+-------------+
| 304500 |
+-------------+
AVG
Sintaxis
AVG([DISTINCT] expr)
Descripción
Retorna el valor promedio de los valores del campo especificado. 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. La media calculada por Avg es la media aritmética (la suma de los valores dividido por el número de valores). La función Avg no incluye ningún campo Null en el cálculo.
Ejemplos
Calcula el salario medio de los empleados de la empresa.
SELECT AVG(SALARY) FROM EMPLOYEES;
+-----------------+
| AVG(SALARY) |
+-----------------+
| 6461.6822429907 |
+-----------------+
1 ROW IN SET (0.01 sec)S
El ejemplo anterior lo podemos realizar redondeando a un numero determinado de decimales, como veremos más adelante.
SELECT ROUND(AVG(SALARY), 3) FROM EMPLOYEES;
+-----------------------+
| ROUND(AVG(SALARY), 3) |
+-----------------------+
| 6461.682 |
+-----------------------+
1 ROW IN SET (0.02 sec)
Lista los empleados que tengan su sueldo superior a la media del sueldo medio de la empresa.
SELECT FIRST_NAME,LAST_NAME ,SALARY
FROM EMPLOYEES
WHERE SALARY > (SELECT AVG(SALARY) FROM EMPLOYEES);
+-------------+------------+--------+
| FIRST_NAME | LAST_NAME | SALARY |
+-------------+------------+--------+
| Steven | King | 24000 |
| Neena | Kochhar | 17000 |
| Lex | De Haan | 17000 |
| Alexander | Hunold | 9000 |
| Nancy | Greenberg | 12000 |
| Daniel | Faviet | 9000 |
...
| Susan | Mavris | 6500 |
| Hermann | Baer | 10000 |
| Shelley | Higgins | 12000 |
| William | Gietz | 8300 |
+-------------+------------+--------+
51 ROWS IN SET (0.00 sec)
MOD
Sintaxis
MOD(N,M), N % M, N MOD M
Descripción
Devuelve el resto fr la división de N entre M, tambien llamado "Módulo" (como el operador % en programación). Recibe dos argumentos como parametros y devuelve el resto de la división del primero entre el segundo.
Ejemplos
SELECT MOD(125, 10);
+-------------+
| MOD(125,10) |
+-------------+
| 5 |
+-------------+
1 ROW IN SET (0.02 sec)
La misma operación se puede realizar de otras formas, con el mismo resultado :
SELECT 125 % 10;
SELECT 125 MOD 10;
Lista los empleados que su numero de empleado (EMPLOYEE_ID) sea par
SELECT EMPLOYEE_ID,LAST_NAME, EMPLOYEE_ID % 2 FROM EMPLOYEES WHERE EMPLOYEE_ID % 2 = '0';
+-------------+-------------+-----------------+
| EMPLOYEE_ID | LAST_NAME | EMPLOYEE_ID % 2 |
+-------------+-------------+-----------------+
| 100 | King | 0 |
| 102 | De Haan | 0 |
| 104 | Ernst | 0 |
| 106 | Pataballa | 0 |
| 108 | Greenberg | 0 |
...
| 194 | McCain | 0 |
| 196 | Walsh | 0 |
| 198 | OConnell | 0 |
| 200 | Whalen | 0 |
| 202 | Fay | 0 |
| 204 | Baer | 0 |
| 206 | Gietz | 0 |
+-------------+-------------+-----------------+
54 ROWS IN SET (0.19 sec)
Calcula el resto de dividir el salario entre la comisión de los empleados.
SELECT FIRST_NAME,SALARY ,COMMISSION_PCT ,MOD(SALARY,COMMISSION_PCT)
FROM EMPLOYEES
WHERE COMMISSION_PCT IS NOT NULL LIMIT 5;
+------------+--------+----------------+----------------------------+
| FIRST_NAME | SALARY | COMMISSION_PCT | MOD(SALARY,COMMISSION_PCT) |
+------------+--------+----------------+----------------------------+
| John | 14000 | 0.4 | 0.39999999999922 |
| Karen | 13500 | 0.3 | 4.9960036108132e-13 |
| Alberto | 12000 | 0.3 | 4.4408920985006e-13 |
| Gerald | 11000 | 0.3 | 0.20000000000041 |
| Eleni | 10500 | 0.2 | 0.19999999999942 |
+------------+--------+----------------+----------------------------+
5 ROWS IN SET (0.01 sec)
Tambien es posible escribir esta sentencia de las siguientes formas:
SELECT FIRST_NAME,SALARY,COMMISSION_PCT,SALARY%COMMISSION_PCT
FROM EMPLOYEES
WHERE COMMISSION_PCT IS NOT NULL LIMIT 5;
SELECT FIRST_NAME,SALARY,COMMISSION_PCT,SALARY MOD COMMISSION_PCT
FROM EMPLOYEES
WHERE COMMISSION_PCT IS NOT NULL LIMIT 5;