【发布时间】:2014-06-11 14:32:39
【问题描述】:
我有以下带有示例数据的 SQL 架构(简化)。
Table vote
+--+-------+------+
|id|user_id|points|
+--+-------+------+
| 1| 1| 3|
| 2| 1| 1|
| 3| 1| 0|
| 4| 2| 2|
| 5| 2| 2|
| 6| 2| 0|
| 7| 3| 2|
| 8| 3| 1|
| 9| 3| 2|
+--+-------+------+
我想要实现的是选择 user_id 按求和点排序,按最多 3 点排序,按最多 2 点排序。
所以是这样的:
SELECT v.user_id, SUM(v.points) FROM vote v ORDER BY SUM(v.points) DESC, (Number of 3 points) DESC, (Number of 2 points) DESC GROUP BY v.user_id
我正在努力设置两个子查询,因为我不知道如何跟踪当前的user_id。
所以在上述数据的情况下,我想要以下结果:
+-------+------+
|user_id|points|
+-------+------+
| 3| 5|
| 1| 4|
| 2| 4|
+-------+------+
用户3是第一,因为他总共有5分,用户1是第二名,因为他有一次3分(比用户2多一个)。
这可以用 SQL 实现吗?
【问题讨论】:
标签: mysql sql subquery correlated-subquery