我们可以在SQL语句中使用SUM和Max函数吗?
我有以下要求: CODE Marks A 50 A 50 B 60 B 60 C 20 C 20 代码标记 A 50 A 50 B 60 B 60 C 20 C 20 现在,我想写一个查询来显示TopScorer的代码和分数。在这个例子中,它是B和120。如何用SQL编写它。标准SQL我们可以在SQL语句中使用SUM和Max函数吗?,sql,Sql,我有以下要求: CODE Marks A 50 A 50 B 60 B 60 C 20 C 20 代码标记 A 50 A 50 B 60 B 60 C 20 C 20 现在,我想写一个查询来显示TopScorer的代码和分数。在这个例子中,它是B和120。如何用SQL编写它。标准SQL SELECT C
SELECT
Code, MAX(SumMarks)
FROM
(
SELECT
SUM(Marks) as SumMarks, Code
FROM
SomeTable
GROUP BY
Code
) foo
GROUP BY
Code
使用TOP或LIMIT(根据需要取消注释)。对于SQL Server,这是最好的(与TIES一起使用),因为您可能有另一个具有相同最大值的分数总和
SELECT -- TOP 1 -- WITH TIES if you have 2 scores the same
SUM(Marks) as SumMarks, Code
FROM
SomeTable
GROUP BY
Code
ORDER BY
SUM(Marks) DESC
-- LIMIT 1
如果不是您所需要的,它至少应该会激励您……假设您只需要一行包含具有最高聚合分数的代码,此查询应该可以做到这一点。。。(假设为MS SQL) PostgreSQL或MySQL:
SELECT code
, marks
FROM (
SELECT CODE
, sum(Marks) as marks
FROM yourtable
GROUP BY CODE
ORDER BY 2 DESC
) mysums
LIMIT 1
SQL Server:
SELECT TOP 1
code
, marks
FROM (
SELECT CODE
, sum(Marks) as marks
FROM yourtable
GROUP BY CODE
ORDER BY 2 DESC
) mysums
您能否澄清您的问题并添加一些示例输入/输出?很难理解你在问什么。另外,请指定您正在使用的数据库。
SELECT TOP 1
code
, marks
FROM (
SELECT CODE
, sum(Marks) as marks
FROM yourtable
GROUP BY CODE
ORDER BY 2 DESC
) mysums