sql - 我们可以在 SQL 语句中一起使用 SUM 和 Max Function 吗?

标签 sql

我有以下要求:

代码标记
一个 50
一个 50

乙 60
乙 60

20
20

现在,我想编写一个查询来显示最佳射手的 CODE 和标记。在这个例子中它的 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,这是更可取的(使用 WITH 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

如果不是你需要的,它至少应该激励你......

关于sql - 我们可以在 SQL 语句中一起使用 SUM 和 Max Function 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7759347/

相关文章:

sql - 使用 SQL Server 将一列中的字符串中的多个值拆分为多列

mysql - 有没有办法进一步优化这个 SELECT 查询?

sql - 等效于 HBase 中的 Order By 操作

sql - MS SQL Server十进制数据类型四舍五入

php - 将上传图像的路径更新到数据库中

sql - 如何通过超过 500,000 行国际字符加快 sqlite 搜索

sql - 正确设计SQL Server数据库

c# - 使用一种方法运行类似的存储过程(将 StoredProcedure 名称作为方法参数传递)是否安全

php - 获取 "SQLSTATE[HY093]: Invalid parameter number: parameter was not defined"

mysql - SQL 连接尊重顺序的两个表