【发布时间】:2021-02-13 16:04:53
【问题描述】:
我想获取 SQL 中得分最高的用户。我有这张桌子:
| userId | points |
|---|---|
| 1 | 1 |
| 2 | 0 |
| 3 | 4 |
| 1 | 1 |
| 3 | 2 |
| 2 | 5 |
现在,我想获取分数最高的 userId?在这个例子中,它是用户 3,但我如何自动执行此操作是 SQL?
【问题讨论】:
-
提示:
GROUP BY。你有没有尝试过?
我想获取 SQL 中得分最高的用户。我有这张桌子:
| userId | points |
|---|---|
| 1 | 1 |
| 2 | 0 |
| 3 | 4 |
| 1 | 1 |
| 3 | 2 |
| 2 | 5 |
现在,我想获取分数最高的 userId?在这个例子中,它是用户 3,但我如何自动执行此操作是 SQL?
【问题讨论】:
GROUP BY。你有没有尝试过?
我想我有一个解决方案,请检查下面的代码=>
CREATE TABLE USERS (userId int,points int);
INSERT INTO USERS VALUES(1,1);
INSERT INTO USERS VALUES(2,0);
INSERT INTO USERS VALUES(3,4);
INSERT INTO USERS VALUES(1,1);
INSERT INTO USERS VALUES(3,2);
INSERT INTO USERS VALUES(2,5);
INSERT INTO USERS VALUES(1,5);
这是 MYSQL 8.0 的 ss
WITH CTE AS
(SELECT USERID,
points,
RANK() OVER(ORDER BY points DESC) RNK
FROM USERS
)
SELECT * FROM CTE
WHERE RNK=1
注意:检查db-fiddle中的输出。
【讨论】: