这是我的sql表。
+-------+------+------+------+------+
| name | q1 | q2 | q3 | q4 |
+-------+------+------+------+------+
| Alex | 5 | 4 | 10 | 7 |
| Brown | 7 | 6 | 4 | 1 |
| Chris | 10 | 10 | 9 | 10 |
| Dave | 8 | 4 | 6 | 0 |
+-------+------+------+------+------+
我想在上面的sql查询中对每个用户的前2个得分进行求和。
例如,亚历克斯的前两名得分是 10
以及 7
,所以总和是 10 + 7 = 17
我尝试了以下查询:
SELECT NewStudents.name, SUM(q1+q2+q3+q4) FROM NewStudents
GROUP BY NewStudents.name;
合计 q1, q2, q3, q4
但这个查询将所有 q1
至 q4
,而不是前两名 q1
至 q4
.
如何构造我想在mysql中执行的语句?
3条答案
按热度按时间wztqucjr1#
在mysql的旧版本中,可以使用变量来实现此目的:
cnjp1d6j2#
标准化设计可能如下所示:
4uqofj5v3#
如评论中的@shadow所述。。你的数据库需要重新构造。。因为那不是数据库工作。。你可以重新构造并做出这样的设计。。
对于查询,您可以这样做:
您可以在此处查看演示:
演示<>小提琴
编辑:您可以使用
Window Function
. 可以读取row\ u number()函数