我有以下场景,我想对表格进行排序并按总和从高到低的组排列
name score
----------------
abc 10
pqr 9
abc 7
pqr 3
abc 10
xyz 7
pqr 7
xyz 3
xyz 2
现在如果我们观察,
总计 (abc) = 10 + 7 + 10 = 27
总计 (pqr) = 9 + 3 + 7 = 19
总计 (xyz) = 7 + 3 + 2 = 12
如何在 SQL
中按总和最高的组对上表进行排序,并且它应该显示单个条目?
Expected output:
----------------
name score
----------------
abc 10
abc 10
abc 7
pqr 9
pqr 7
pqr 3
xyz 7
xyz 3
xyz 2
最佳答案
SQLite 没有分析/窗口函数,因此您需要自己计算不同的数据。
SELECT
yourTable.*
FROM
yourTable
INNER JOIN
(
SELECT name, SUM(score) AS score FROM yourTable GROUP BY name
)
AS totalScores
ON totalScores.name = yourTable.name
ORDER BY
totalScores.score DESC,
yourTable.name,
yourTable.score DESC
在这个查询中,有一个子查询。子查询计算每个名称的 totalScore。
这样您就可以将该总分放入 ORDER BY 子句中。请注意,我不会在我的结果中选择总分,你可以但没有必要。
此外,我已将名称放在 ORDER BY 中。这样,如果有多个名字的总分相同,则按字母顺序排在第一位的名字会显示在最前面。
关于sql - 按总和最高的组对表进行排序并显示单个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17021659/