我有一个简短的问题:我需要在下表中的每一天取一个第一个值:
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
所以结果应该是这样的:
Date Price
2018-09-01 10:00:00 123
2018-09-02 10:03:00 25868
2018-09-03 10:16:00 58192
我的查询如下:
SELECT price, min(date)
FROM table
WHERE data BETWEEN '2018-09-01%' AND "2018-09-03%"
GROUP BY date
我在这里有一个问题。我无法编写将每天的第一分钟都考虑在内的查询。谁能帮我解决这个问题?
感谢您的回答
答案 0 :(得分:2)
使用相关子查询
select * from t t1
where date in (select min(date) from t t2
where date(t1.date)=date(t2.date)
group by date(date)
)
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=47d5494c6158ebcfeea7e80d55f3a589
date prince
2018-09-01 10:00:00 123
2018-09-02 10:03:00 25868
2018-09-03 10:16:00 36
答案 1 :(得分:0)
您需要选择日期和时间排序,然后将查询限制为一个。
SELECT price FROM table WHERE date = (date object) SORT BY date LIMIT=1
答案 2 :(得分:0)
尝试在查询中集成“限制= 1”。 这样可以将结果减少为一个输出
答案 3 :(得分:0)
尝试一下:
SELECT t.price, t.date
FROM table t
JOIN (SELECT price, min(date) as date
FROM table
GROUP BY price) t2
ON t2.date = t.date
AND t2.price = t.price
WHERE t.date BETWEEN '2018-09-01%' AND "2018-09-03%"
答案 4 :(得分:0)
尝试按日期分组,然后获取日期和价格中的最小值
SELECT price, date from table where date in
(
SELECT min(date)
FROM table
WHERE date BETWEEN '2018-09-01%' AND "2018-09-03%"
GROUP BY DATE(date)
) ;