MySQL Выберите три самые последние записи для отчета

У меня есть отчеты, которые я запускаю, и храню результаты в таблице report_runs:

run_id int(11), report_id int(11), report_run_date datetime

Эти отчеты могут иметь один или несколько прогонов. Я хотел бы получить три самых последних run_idдля каждого report_id, Как run_idс шагом, это должно быть выполнимо с любой из трех run_idс для report_idили по последним трем run_dateс, но я не уверен, как!

Я попробовал несколько вариантов этого:

SELECT group_concat(outerRuns.run_id),
   outerRuns.report_id,
   COUNT(innerRuns.id) AS runs
FROM report_runs outerRuns
   INNER JOIN report_runs innerRuns
              ON outerRuns.id = innerRuns.id
GROUP BY
   outerRuns.report_id
HAVING runs > 3

Хотя это дает мне один run_id и его счет проходит через его report_idЯ действительно не уверен, как получить полный список, а затем отфильтровать его до трех самых последних...

Отредактируйте запрос: добавлен group_concat для получения всех запусков, по-прежнему необходимо фильтровать только самые последние.

Набор результатов и запрос в настоящее время выглядят так:

SELECT outerRuns.report_id,
       group_concat(outerRuns.id),
       COUNT(innerRuns.id) AS runs
FROM report_runs outerRuns
  INNER JOIN report_runs innerRuns
    ON outerRuns.id = innerRuns.id
GROUP BY
  outerRuns.report_id
HAVING runs > 3

,

| report_id | group_concat(innerRuns.id)                                                                                                                | runs |
|        13 | 10,12,15,18,19,20,22                                                                                                                        |    7 |
|        14 | 47,67,101,127,154,182,209,243,291,412,624,713,796,866,1622,1899,2173,2324,2474,2610,2760,2913,3068,3261,3453                                |   25 |
|        15 | 9,16,17,48,68,102,128,155,252,316,448,668,737,808,1253,1357,1634,1775,1943,2080,2225,2368,2518,2656,2813,2964,3164,3359                     |   28 |
|        16 | 11,14,29,50,70,77,91,116,143,170,197,232,295,413,638,712,790,862,1325,1623,1778,1949,2098,2256,2398,2544,2693,2842,2991,3211,3403,3580      |   32 |
|        17 | 21,28,46,65,75,106,133,160,188,230,262,336,672,742,814,1259,1359,1635,1773,1960,2104,2252,2395,2538,2667,2825,2947,2948,3078,3265,3458,3634 |   32 |

0 ответов

Другие вопросы по тегам