sql—选择最大值和按日期分组的相应行id

ylamdve6  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(340)

我有一个(mssql)排名列表,它有一个id、一个用户名、一个日期和一个score属性。

id | username | date | score
----------------------------
1      joe    01/2020  200
2      bob    01/2020  300
3      max    02/2020  350
4      jane   02/2020  300
5      bob    02/2020  250
6      joe    03/2020  150

我试图实现的是选择按日期分组的最高分以及相应的id和用户名,这将产生如下结果:

id | username | date | score
----------------------------
2      bob    01/2020  300
3      max    02/2020  350
6      joe    03/2020  150

我决不是一个数据库的家伙,我失败得很惨!
有人能帮我吗?谢谢!
编辑:我现在不在乎领带。

5lhxktic

5lhxktic1#

如果数据库支持窗口函数:

Select * from (Select t.*,
row_number() OVER (Partition by date order by score desc)  rn
from table t) where rn = 1;

+----+----------+---------+-------+----+
| id | username | dte     | score | rn |
+----+----------+---------+-------+----+
|  2 | bob      | 01/2020 |   300 |  1 |
+----+----------+---------+-------+----+
|  3 | max      | 02/2020 |   350 |  1 |
+----+----------+---------+-------+----+
|  6 | joe      | 03/2020 |   150 |  1 |
+----+----------+---------+-------+----+
57hvy0tb

57hvy0tb2#

像下面这样试试

select a.* form table_name a
where a.score=( select max(score) from table_name b where a.date=b.date )

相关问题