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.
Tabla de Contenidos
ocultar
Sintaxis
La sintaxis de la función ANY_VALUES es la siguiente:
select any_value ( anyelement )
from tabla;
Lenguaje del código: JavaScript (javascript)
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;
Lenguaje del código: JavaScript (javascript)
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;
Lenguaje del código: JavaScript (javascript)