Postgresql
獲取一組值的聚合(此處為:min)
範例表:
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
。