假设我们有这张表:
----------
number |name| price
----------
1 | a | 2
----------
1 | b | 4
----------
2 | c | 4
----------
3 | d | 6
----------
我想选择数字及其最高价格。那么我怎样才能只选择数字1的行,它具有较高的价格而不显示另一行?我的问题是第二栏。
答案 0 :(得分:1)
简单:GROUP BY
select number, max(price)
from your_table
group by number;
如果您有更多列,并且想要选择具有最高价格的行,请使用:
select *
from (select
t.*,
row_number() over (partition by number order by price desc) rn
from your_table t) t
where rn = 1;
答案 1 :(得分:1)
在Postgres中,为每个price
获取最高number
行的最有效方法是使用distinct on
:
select distinct on (number) t.*
from t
order by number, price desc;