Как говорится в заголовке, я хочу выбрать одну запись из каждого месяца с последней датой. У меня есть таблица вроде этого:
ID field1 field2 created_at
----------------------------------------------
1 40000.0000 70000.0000 2018-01-31
2 80000.0000 90000.0000 2018-02-28
3 10000.0000 30000.0000 2018-03-31
4 12000.0000 32000.0000 2018-04-30
5 212500.0000 312500.0000 2018-05-31
6 324000.0000 424000.0000 2018-06-30
7 122300.0000 222300.0000 2018-07-26
8 357772.2420 307600.9081 2018-07-31
Я придумал этот запрос, но он работает не так, как ожидалось.
SELECT id, field1, field2, MAX (created_at) AS created_at FROM
my_table
GROUP BY YEAR (created_at), MONTH (created_at) ORDER BY created_at ASC
Выход, который я получаю:
ID field1 field2 created_at
----------------------------------------------
1 40000.0000 70000.0000 2018-01-31
2 80000.0000 90000.0000 2018-02-28
3 10000.0000 30000.0000 2018-03-31
4 12000.0000 32000.0000 2018-04-30
5 212500.0000 312500.0000 2018-05-31
6 324000.0000 424000.0000 2018-06-30
7 122300.0000 222300.0000 2018-07-31 <-- values from ID 7 but date from ID 8
Ожидаемый результат
ID field1 field2 created_at
----------------------------------------------
1 40000.0000 70000.0000 2018-01-31
2 80000.0000 90000.0000 2018-02-28
3 10000.0000 30000.0000 2018-03-31
4 12000.0000 32000.0000 2018-04-30
5 212500.0000 312500.0000 2018-05-31
6 324000.0000 424000.0000 2018-06-30
8 357772.2420 307600.9081 2018-07-31
Как выбрать значения из той же записи, что и MAX(created_at)
?
Вы можете попробовать следующее:
SELECT id, field1, field2, created_at AS created_at
FROM 'my_values'
where created_at in (select max(created_at)
FROM 'my_values'
GROUP BY YEAR(created_at), MONTH(created_at) ORDER BY created_at ASC )
используя соединение
select id, field1, field2,T2.created_at from my_values T1
inner join
(
select max(created_at) as created_at
FROM 'my_values'
GROUP BY YEAR(created_at), MONTH(created_at) ORDER BY created_at ASC
) as T2
on T1.created_at=T2.created_at
http://sqlfiddle.com/#!9/4f7442/18
id field1 field2 created_at
1 40000 70000 2018-01-31
2 80000 90000 2018-02-28
3 10000 30000 2018-03-31
4 12000 32000 2018-04-30
5 212500 312500 2018-05-31
6 324000 424000 2018-06-30
8 357772.242 307600.9081 2018-07-31