MySQL - 选择一年中总和的最大值

标签 mysql group-by max

我有这样的表格:

  v   | day | month | year
  1      1     1      1950
  2      2     1      1950
  3      3     1      1950
  1      1     2      1950
  1      1     2      1951
  2      1     2      1952

我已使用此查询来选择 MIN

SELECT SUM(v) AS sum_val, year, month
FROM `d`
GROUP BY year, month

这将导致

sum_val | year | month  
  6       1950     1
  1       1950     2
  1       1951     2 
  2       1952     2

如何选择指定年份按月分组的 sum_val 的最大值? 我已经尝试过了

SELECT (MAX(f.sum_val)) AS max_sum, f.year, f.month
FROM (
    SELECT SUM(v) AS sum_val, year, month
    FROM `d`
    GROUP BY year, month
) AS f
GROUP BY month

但这错误地将年份分配给值

max_sum | year | month  
   6      1950    1
   2      1950    2   <--- should be 1952

SqlFiddle:http://sqlfiddle.com/#!9/ab23b4/6/0

最佳答案

您可以在连接中使用一些基于 sum_val 的子查询

select t2.sum_val, t2.year, t2.month 
from (
    SELECT SUM(v) AS sum_val, year, month
    FROM `d`
    GROUP BY year, month
) t2 
INNER JOIN (
    select max(sum_val) max_val, year
    from (
        SELECT SUM(v) AS sum_val, year, month
        FROM `d`
        GROUP BY year, month
    )  t  
    group by year 
) t3  on t3.max_val = t2.sum_val    and t3.year  = t2.year

注意,如果有两行与 max val 匹配,查询将返回两行

关于MySQL - 选择一年中总和的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731584/

相关文章:

sql - 如何使用 SQL 组过滤具有最大日期值的行

r - 根据前 5 个值汇总 R 中的多列

python - 使用 groupby 获取组中具有最大值的行

php - 为什么我的哈希值总是全 0?

php - 如何在 symfony 中检索一个 ID 之后的所有记录?

mysql - SELECT 语句 WHERE BETWEEN 计算字段 - 空结果

MySQL 分组依据

highcharts - 强制 yAxis.max 在 Highcharts 中不受尊重

mysql - 所有行中重复的列的最小值和最大值

MySQL 触发器删除整个表而不是一个条目