【发布时间】:2021-11-05 05:47:59
【问题描述】:
让我们考虑下面的一个简单表格。
| id | code | marks | grade |
|---|---|---|---|
| 1 | X | 100 | A |
| 2 | Y | 120 | B |
| 3 | Z | 130 | A |
| 4 | X | 120 | C |
| 5 | Y | 100 | A |
| 6 | Z | 110 | B |
| 7 | X | 150 | A |
| 8 | X | 140 | C |
目标:获得每个年级的最高分,返回所有列。
| id | code | marks | grade |
|---|---|---|---|
| 7 | X | 150 | A |
| 2 | Y | 120 | B |
| 8 | X | 140 | C |
如果我不想要id 和code 列,这很简单
select grade, max(marks)
from table
group by grade;
在上述查询中获取id 和code 列的最有效查询是什么?
我尝试了类似的方法,但没有成功
select * from table t
inner join
(select grade, max(marks)
from table
group by grade) a
on a.grade=t.grade;
【问题讨论】:
标签: sql postgresql greatest-n-per-group