Carlos Enrique Perez escribió: > Si el Case lo tenes en el select, el group by debe repetir el Case > tambien.... algo que probablemente tire la performance de tu consulta > si la misma se hace sobre muchos datos.
Ojo que si una expresión no volátil aparece en más de un lugar, el ejecutor la evalúa una sola vez y el resto de los lugares re-utiliza el valor. (Es más complicado que eso, pero vale para el caso en que tienes la misma expresión en la lista de resultados y en el GROUP BY). Puedes probarlo con una función marcada IMMUTABLE que haga un RAISE NOTICE: alvherre=# create function peep(a int) returns int immutable language plpgsql as $$ begin raise notice 'peep %', $1; return $1; end; $$; CREATE FUNCTION Duración: 18,041 ms alvherre=# create table quux as select * from generate_series(1, 10) a; SELECT 10 Duración: 7,197 ms alvherre=# select peep(a) from quux group by peep(a); NOTICE: peep 1 NOTICE: peep 2 NOTICE: peep 3 NOTICE: peep 4 NOTICE: peep 5 NOTICE: peep 6 NOTICE: peep 7 NOTICE: peep 8 NOTICE: peep 9 NOTICE: peep 10 peep ────── 8 4 1 5 3 10 9 6 2 7 (10 filas) -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services - Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda