У меня короткий вопрос: Мне нужно взять минимальное значение для каждого дня в таблице, как показано ниже:
Date Price
2018-09-01 10:00:00 123
2018-09-01 10:01:00 2568
2018-09-01 10:02:00 2155
2018-09-01 10:03:00 23
2018-09-02 10:03:00 25868
2018-09-02 10:10:00 84213
2018-09-03 15:10:00 58192
2018-09-03 10:16:00 36
2018-09-03 10:17:00 9
Результат должен быть таким:
Date Price
2018-09-01 10:03:00 23
2018-09-02 10:03:00 25868
2018-09-03 10:17:00 9
Мой запрос выглядит так:
SELECT MIN(price), data
FROM table
WHERE data BETWEEN '2018-09-01%' AND "2018-09-03%"
GROUP BY date
И здесь у меня проблема. Я не могу написать запрос, который не будет учитывать часы и секунды, только дни. Может ли кто-нибудь помочь мне решить эту проблему?
Спасибо за любые ответы
Имя столбца - data или date?
pgadmin предназначен для PostGres, а не для MySQL. Вы имели ввиду PhpMyAdmin? В любом случае, это не имеет отношения к вопросу.






Вы должны извлечь ДАТУ из значений
SELECT MIN(price), DATE(date) as d
FROM table
WHERE data BETWEEN '2018-09-01' AND "2018-09-03"
GROUP BY d
@Tmiskiewicz Если ответ сработал для вас, примите его.
@ Strawberry Вы правы. Простите, случайно скопировал из вопроса. Я починил это. Спасибо!
Я не уверен, какой должна быть ваша статья BETWEEN. Похоже, что используются подстановочные знаки LIKE, но без LIKE.
Вы должны использовать простые сравнения дат. Запрос должен выглядеть так:
SELECT date(data) as thedate, MIN(price), data
FROM table
WHERE data >= '2018-09-01' AND data < '2018-09-04'
GROUP BY thedate ;
Ваша попытка использовать строки может привести к неверным результатам, а также к снижению производительности (поскольку это препятствует использованию индекса).
Используйте
DATE(date), чтобы получить часть даты из даты и времени.