PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

sélection d'une colonne en fonction d'une valeur minimale d'une autre colonne

En SQL standard, cela peut être fait en utilisant une fonction de fenêtre

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 a cependant le distinct on opérateur qui est généralement plus rapide que la solution correspondante avec une fonction fenêtre :

select distinct on (test_type, model) 
       test_type, model, firmware_version, avg_throughput
from temp_table
order by test_type, model, firmware_version;

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