Postgresql

獲取一組值的聚合(此處為:min)

  • May 16, 2015

範例表:

ID   | value A | value B  
----------------------  
1    |    abc  |   3  
1    |    def  |   5  
1    |    ghi  |   1  
2    |    cba  |   9  
2    |    fed  |   4  

我想要來自任何“ID-group”中的行,該行在該組中的值 B 中是最小值。

想要的結果:

ID | value A | value B  
----------------------  
1  |    ghi  |   1  
2  |    fed  |   4  

我嘗試使用 group by 的任何操作總是失敗,因為該“值 B”列及其不同的值,因為我不想/不能聚合它們。

select ID, value_A, value_B 
From t where (value_B,ID) in 
(select min(value_B),ID from t group by ID);

Postgres 可以滿足distinct on您的需求:

select distinct on (id) id, value_a, value_b
from t
order by id, value_b;

SQLFiddle在這裡

value_b您還沒有指定當for 的多個值時您希望看到的內容id

引用自:https://dba.stackexchange.com/questions/101590