Función ANY_VALUES en PostgreSQL

La función ANY_VALUES en PostgreSQL consigue agregar un campo no agregable (campo no numérico). Gracias a esto consigues no tener que agregar el campo no agregable al group by y en muchos casos se gana tiempo de ejecución. La función ANY_VALUES está englobada en las denominadas funciones de agregación.

Sintaxis

La sintaxis de la función ANY_VALUES es la siguiente:

select any_value ( anyelement ) 
from tabla;

Ejemplos

Usaremos la siguiente tabla llamada empleados para realizar los ejemplos (al final de la página está disponible el script para crearla)

Ejemplo básico

En el siguiente ejemplo obtenemos la media de sueldos de la tabla empleados sin incluir el puesto en el group by:

SELECT nombre, any_value(puesto), sum(sueldo)
from empleados
group by nombre;

Ejemplo completo

Copia y pega el siguiente código en tu consola de PostgreSQL y realiza paso a paso leyendo los comentarios:

-- Borramos la tabla si existe
drop table if exists empleados;

-- Creamos la tabla
create table empleados
(
    id_empleado numeric(2,0),
    id_departamento numeric(2,0),
    nombre character varying(50),
    puesto character varying(50),
    fecha_alta date,
    sueldo integer
);

-- Insertamos valores
insert into empleados
values (1,1,'Miguel Troyano','Analista','26/09/1986',60000),
       (2,1,'Ismael Troyano','Analista','01/01/2001',60000),
	   (3,1,'Jose Troyano','Alta Dirección','01/01/2001',80000),
	   (4,1,'Pilar Redondo','Alta Dirección','02/02/2002',80000);

-- Mostramos la media del sueldo de la tabla empleados por nombre y puesto
SELECT nombre, any_value(puesto), sum(sueldo)
from empleados
group by nombre;

Escribir un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.