Получение ближайших записей к определенной дате, сгруппированных по типу

#mysql #date #group-by #records

#mysql #Дата #группировать по #записи

Вопрос:

Извините, я не могу быть более конкретным, но я не знаю, как описать мою проблему в названии.. соответственно, я не знаю, как искать подобный вопрос.

Итак, вот в чем дело. У меня есть эта таблица с записями:

пример таблицы базы данных

Как вы можете видеть, у меня есть данные, введенные в разные месяцы с разным типом. Моя цель — получить последнюю введенную сумму, сгруппированную по типу, и это должно быть ограничено датой.

Например:

Если я укажу дату 2011-03-01, запрос должен вернуть 3 записи с суммой — 10, 20 и 30, потому что для type = 1 ближайшая вставленная запись к ‘2011-03-01’ относится к дате 2011-01-01 с суммой 10. Для type=2 ближайшей датой к ‘2011-03-01’ является 2011-02-01 с суммой 20. А для type= 3 ближайшей к ‘2011-03-01’ является ‘2011-03-01’, поэтому она возвращает amount = 30.

Итак, как сформировать запрос MySQL?

Ответ №1:

Прямо сейчас я могу думать только о подвыборной версии:

 SELECT type, amount
FROM table AS t
WHERE dat = (
    SELECT MAX(dat)
    FROM table
    WHERE type=t.type
        AND dat <= '2011-03-01'
)
  

Комментарии:

1. Большое вам спасибо. Это не такое уж сложное решение. Какой позор. Еще раз спасибо.