sq,每天唯一的第一个值

时间:2018-09-18 06:00:23

标签: mysql sql select

我有一个简短的问题:我需要在下表中的每一天取一个第一个值:

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 

我在这里有一个问题。我无法编写将每天的第一分钟都考虑在内的查询。谁能帮我解决这个问题?

感谢您的回答

5 个答案:

答案 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)
) ;