AnteriorPosterior

6 - Operaciones matemáticas

Por: Nacho Cabanes
Actualizado: 17-04-2019 10:53
Tiempo de lectura estimado: 5 min.

 

SQL y MySQL

6.1 Operaciones matemáticas

Desde SQL podemos realizar operaciones a partir de los datos antes de mostrarlos. Por ejemplo, podemos mostrar cual era la edad de una persona hace un año, con

SELECT edad-1 FROM personas;

Los operadores matemáticos que podemos emplear son los habituales en cualquier lenguaje de programación, ligeramente ampliados: + (suma), - (resta y negación), * (multiplicación), / (división) . La división calcula el resultado con decimales; si queremos trabajar con números enteros, también tenemos los operadores DIV (división entera) y MOD (resto de la división):

SELECT 5/2, 5 div 2, 5 mod 2;

Daría como resultado

+--------+---------+---------+
| 5/2    | 5 div 2 | 5 mod 2 |
+--------+---------+---------+
| 2.5000 |       2 |       1 |
+--------+---------+---------+

Para que resulte más legible, se puede añadir un "alias" a cada "nuevo campo" que se genera al plantear las operaciones matemáticas:

SELECT 5/2 divReal, 5 div 2 divEnt, 5 mod 2 resto;

+---------+--------+-------+
| divReal | divEnt | resto |
+---------+--------+-------+
|  2.5000 |      2 |     1 |
+---------+--------+-------+

También podríamos utilizar incluso operaciones a nivel de bits, como las del lenguaje C (>> para desplazar los bits varias posiciones a la derecha, << para desplazar a la izquierda, | para una suma lógica bit a bit, & para un producto lógico bit a bit y ^ para una operación XOR):

SELECT 25 >> 1, 25 << 1, 25 | 10, 25 & 10, 25 ^ 10;

que daría

+---------+---------+---------+---------+---------+
| 25 >> 1 | 25 << 1 | 25 | 10 | 25 & 10 | 25 ^ 10 |
+---------+---------+---------+---------+---------+
|      12 |      50 |      27 |       8 |      19 |
+---------+---------+---------+---------+---------+

6.2 Funciones de agregación

También podemos aplicar ciertas funciones matemáticas a todo un conjunto de datos de una tabla. Por ejemplo, podemos saber cual es la edad más baja de entre las personas que tenemos en nuestra base de datos, haríamos:

SELECT min(edad) FROM personas;

Las funciones de agregación más habituales son:

  • min = mínimo valor
  • max = máximo valor
  • sum = suma de los valores
  • avg = media de los valores
  • count = cantidad de valores

La forma más habitual de usar "count" es pidiendo con "count(*)" que se nos muestren todos los datos que cumplen una condición. Por ejemplo, podríamos saber cuantas personas tienen una dirección que comience por la letra "s", así:

SELECT count(*) FROM personas WHERE direccion LIKE 's%';

6.3. Ejercicios propuestos

(Estos ejercicios parten de la base de datos "ejercicio5" o "ejercicio4").

  • 6.1. Muestra el nombre de cada artículo y la cantidad de páginas que ocupa (página final - página inicial + 1; por ejemplo, un artículo que empiece en la página 3 y acabe en la 4 ocupa dos páginas).
  • 6.2. Muestra la cantidad de artículos que hay en la base de datos.
  • 6.3. Muestra la cantidad de revistas que contienen "byte" en su nombre.
  • 6.4. Muestra la media del año de publicación de las revistas de la base de datos.
  • 6.5. Muestra el año de publicación de la revista más antigua de la base de datos (el mínimo de los años) y el de la más moderna (el máximo).
  • 6.6. Muestra el total de páginas que tenemos indexadas (mira la pregunta 6.1 para ver una pista de cómo calcular las páginas de cada artículo).

228 visitas desde el 17-04-2019

AnteriorPosterior