Listado completo de tutoriales

19 - Columnas calculadas (operadores aritméticos y de concatenación)


Aprendimos que los operadores son símbolos que permiten realizar distintos tipos de operaciones.
Dijimos que PostgreSQL tiene 4 tipos de operadores: 1) relacionales o de comparación (los vimos), 2) lógicos (lo veremos más adelante, 3) aritméticos y 4) de concatenación.

Los operadores aritméticos permiten realizar cálculos con valores numéricos.
Son: multiplicación (*), división (/) y módulo (%) (el resto de dividir números enteros), suma (+) y resta (-).

Es posible obtener salidas en las cuales una columna sea el resultado de un cálculo y no un campo de una tabla.

Si queremos ver los títulos, precio y cantidad de cada libro escribimos la siguiente sentencia:

 select titulo,precio,cantidad
  from libros;

Si queremos saber el monto total en dinero de un título podemos multiplicar el precio por la cantidad por cada título, pero también podemos hacer que PostgreSQL realice el cálculo y lo incluya en una columna extra en la salida:

 
 select titulo, precio,cantidad,
  precio*cantidad
  from libros;

Si queremos saber el precio de cada libro con un 10% de descuento podemos incluir en la sentencia los siguientes cálculos:

 select titulo,precio,
  precio-(precio*0.1)
  from libros;

También podemos actualizar los datos empleando operadores aritméticos:

 update libros set precio=precio-(precio*0.1);

Todas las operaciones matemáticas retornan error si no se pueden ejecutar. Ejemplo:

 select 5/0;

Los operadores de concatenación: permite concatenar cadenas, el más (||).

Para concatenar el título, el autor y la editorial de cada libro usamos el operador de concatenación ("||"):

 select titulo||'-'||autor||'-'||editorial
  from libros;

Note que concatenamos además unos guiones para separar los campos.

Ingresemos el siguiente lote de comandos SQL en pgAdmin:

 drop table if exists libros;
 
 create table libros(
  codigo serial,
  titulo varchar(40) not null,
  autor varchar(20) default 'Desconocido',
  editorial varchar(20),
  precio decimal(6,2),
  cantidad smallint default 0,
  primary key (codigo)
 );

 -- Ingresamos algunos registros:
 insert into libros (titulo,autor,editorial,precio)
  values('El aleph','Borges','Emece',25);
 insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Java en 10 minutos','Mario Molina','Siglo XXI',50.40,100);
 insert into libros (titulo,autor,editorial,precio,cantidad)
  values('Alicia en el pais de las maravillas','Lewis Carroll','Emece',15,50);

 -- Queremos saber el monto total en dinero de cada libro:
 select titulo, precio,cantidad,
  precio*cantidad
  from libros;

 --Queremos saber el precio de cada libro con un 10% de descuento:
 select titulo,precio,
  precio-(precio*0.1)
  from libros;

 -- Actualizamos los precios con un 10% de descuento y vemos el resultado:
 update libros set precio=precio-(precio*0.1);
 select * from libros;

-- Queremos una columna con el título, el autor y la editorial de cada libro:
 select titulo||'-'||autor||'-'||editorial
  from libros;

La ejecución de este lote de comandos SQL genera una salida similar a:

PostgreSQL pgAdmin columnas calculadas


Retornar