Минимальная стоимость на каждый день

У меня короткий вопрос: Мне нужно взять минимальное значение для каждого дня в таблице, как показано ниже:

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 

И здесь у меня проблема. Я не могу написать запрос, который не будет учитывать часы и секунды, только дни. Может ли кто-нибудь помочь мне решить эту проблему?

Спасибо за любые ответы

Используйте DATE(date), чтобы получить часть даты из даты и времени.

Barmar 17.09.2018 23:27

Имя столбца - data или date?

Barmar 17.09.2018 23:27
pgadmin предназначен для PostGres, а не для MySQL. Вы имели ввиду PhpMyAdmin? В любом случае, это не имеет отношения к вопросу.
Barmar 17.09.2018 23:28
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны извлечь ДАТУ из значений

SELECT MIN(price), DATE(date) as d
FROM table
WHERE data BETWEEN '2018-09-01' AND "2018-09-03"
GROUP BY d

@Tmiskiewicz Если ответ сработал для вас, примите его.

Pritam Banerjee 17.09.2018 23:35

@ Strawberry Вы правы. Простите, случайно скопировал из вопроса. Я починил это. Спасибо!

Maksym Fedorov 18.09.2018 01:13

Я не уверен, какой должна быть ваша статья 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 ;

Ваша попытка использовать строки может привести к неверным результатам, а также к снижению производительности (поскольку это препятствует использованию индекса).

Другие вопросы по теме