[英]MySQL - select max value with of sum over year
我有這樣的表:
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
您可以在 join 中使用一些基於 sum_val 的子查詢 baset
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 匹配,則查詢將返回兩行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.