MySQL - выбрать максимальное значение с суммой за год - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть таблица как:

  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

Я использовал этот запрос для выбора МИНУТ

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

1 Ответ

0 голосов
/ 17 февраля 2019

Вы можете использовать некоторые подзапросные базы для 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, запрос возвращает две строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...