我们可以在SQL语句中使用SUM和Max函数吗?

我们可以在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

我有以下要求:

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 
   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