我有一个简短的问题: 我需要在下表中的每一天取一个最小值:
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
我在这里有一个问题。我无法编写不会只将小时和秒考虑在内的查询。有人可以帮我解决这个问题吗?
感谢您的回答
答案 0 :(得分:3)
您必须从值中提取DATE
SELECT MIN(price), DATE(date) as d
FROM table
WHERE data BETWEEN '2018-09-01' AND "2018-09-03"
GROUP BY d
答案 1 :(得分:0)
我不确定您的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 ;
您尝试使用字符串会导致误导结果并降低性能(因为它阻止使用索引)。