Выберите записи в соответствии с последним днем ​​года

У меня есть таблица с 26 столбцами, в которых первые 3 столбца - это день, месяц, год. И остальные столбцы, имеющие некоторую информацию, которую я должен показать. Теперь я должен получить записи в соответствии с последним днем ​​года. Я пытался написать код.

select * from subscription_stats where year * 10000 + month * 100 + day = LAST_DAY(CONCAT(year,'-',month,'-',day))

Но это будет получать записи с последнего дня каждого месяца, и я хочу последний день лет. А также, когда у меня нет фактического последнего дня в записях, тогда этот код не будет работать. Поэтому вместо LAST_DAY я хочу использовать некоторые функции, такие как МАКСИМАЛЬНАЯ дата в этом месяце. Как я могу реализовать эту функциональность.

1 ответ

Это то, что вы хотите?

select *
from subscription_stats
where month = 12 and day = 31;

Это возвращает строки за 31 декабря.

Если у вас нет записей за все дни, и вы хотите последний день в данных:

select ss.*
from subscription_stats ss
where (ss.month, ss.day) = (select ss2.month, ss2.day
                            subscription_stats ss2
                            where ss2.year = ss.year
                            order by ss2.month desc, ss2.day desc
                           );
Другие вопросы по тегам