我有一张包含测验答案的表格。以下查询汇总了给定游戏中每个参与者的总数。
SELECT @prev := @curr,
@curr := totalscore,
@rank := IF(@prev = @curr, @rank, @rank + @i) AS rank,
IF(@prev <> totalscore, @i:=1, @i:=@i+1) AS counter,
user_id, name, totalscore
FROM
(
SELECT scoringtable.user_id, scoringtable.name, sum(scoringtable.score) AS totalscore
FROM
scoringtable
WHERE game='B'
GROUP BY scoringtable.user_id ORDER BY totalscore DESC
)as scoringtable,(SELECT @curr := null, @prev := null, @rank := 1, @i := 0) tmp_tbl
参见工作示例:http://www.sqlfiddle.com/#!9/dd097/2
但是,在显示总计的表格中,我还想通过为每个月创建一列来显示每个月获得的积分。我知道我可以通过这样的查询获取数据:
SELECT score AS 'january' FROM `scoringtable` WHERE month=1
但是我如何才能在所有 12 个月的现有查询中合并类似的内容?
最佳答案
您可以使用如下所示的案例:
SELECT(月份 =1 时得分结束的情况)
AS“一月”
(月份 = 2 时得分结束的情况)
AS“二月”
来自评分表
关于mysql - 总分查询中获取每月分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34654104/