Выберите записи в соответствии с последним днем года
У меня есть таблица с 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
);