MySQL - Как выбрать первую строку в группе по предложению по дате

Учитывая эту таблицу транзакций

ID Date Name Stat1
1  1     a     1
1  2     b     1
1  3     c     1 
2  4     d     1
2  5     e     1

Я хочу сгруппировать записи по идентификатору, и иметь столбец "Имя" для идентификатора группы, чтобы показать фамилию по дате, как она отображается в таблице (большое число в дате хронологически последнее). конечный результат:

ID Date Name Stat1
1  3     c    3 
2  5     e    2

К сожалению этот код:

Select ID,Date,Name,sum(Stat1)
From myTable
Group by ID

сгенерирует "случайное" имя,
как принудительно выбрать имя первой / последней записи (по дате) в каждой группе (ID)?

Спасибо

1 ответ

Решение

Вы можете сделать это с помощью такого запроса. измените min на max, если вы хотите иметь первый или последний ряд группы:

SELECT result.id,result.mdate,mt.name,result.stat1
FROM (
  Select ID,min(date) mdate,sum(Stat1) as stat1
  From myTable
  Group by ID) AS result
  LEFT JOIN myTable mt 
    ON mt.id = result.id AND mt.date = result.mdate;
Другие вопросы по тегам