PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

selecionando uma coluna com base em um valor mínimo de outra coluna


No SQL padrão isso pode ser feito usando uma função de janela
select test_type, model, firmware_version, avg_throughput
from (
  select test_type, model, firmware_version, avg_throughput, 
         min(firmware_version) over (partition by test_type, model) as min_firmware
  from temp_table
) t
where firmware_version = min_firmware;

Postgres no entanto tem o distinct on operador que geralmente é mais rápido que a solução correspondente com uma função de janela:
select distinct on (test_type, model) 
       test_type, model, firmware_version, avg_throughput
from temp_table
order by test_type, model, firmware_version;

Exemplo do SQLFiddle:http://sqlfiddle.com/#!15/563bd/1