mysql min 最小时间_MySQL获取最小/最大值以及按小时,天,月等分组的相应日期/时间字段...

给定一个表valuetable

ID:somevalues:DATE_TIME

1:50:2012年10月5日十三点00分00秒

2:45:2012年10月5日13: 15:00

3:35:2012年10月5日13时20分○○秒

4:20:2012年10月5日15:00:00

5:45:2012年10月5日15 :25:00

6:35:2012-10-05 15:35:00

等等,您如何查找最小值和最大值以及按小时,天,月等分组的相应日期和时间。

这里的问题是,SQL组中的GROUP只有小时和IN MYSQL,会返回发生在集合或表中的第一个日期时间。我了解其他RDBMS的实现方式不同。因此,我使用ORDER BY来首先对表进行排序,以便当我们运行查询时,这些值按照最小和最大查询的升序和降序排序,这样当我们每小时选择最小值和最大值时,第一个日期 - 查询选择的时间是与最小值或最大值相关的时间。

抠每下面给出的小时最低和最高的查询,

SELECT

*

FROM(

SELECT

HOUR(DATE_TIME) AS MINHOUR,

MIN(SOMEVALUES) AS MINVALUES,

DATE_TIME AS MINDATETIME FROM (SELECT * FROM VALUETABLE

WHERE DATE_TIME>'2012-10-05 00:00:00'

AND DATE_TIME

ORDER BY SOMEVALUES

) AS TEMPT1

GROUP BY HOUR(DATE_TIME)

) AS MINVALTABLE

LEFT JOIN (

SELECT

HOUR(DATE_TIME) AS MAXHOUR,

MAX(SOMEVALUES) AS MAXVALUES,

DATE_TIME AS MAXDATETIME FROM

(

SELECT

*

FROM VALUETABLE

WHERE DATE_TIME>'2012-10-05 00:00:00'

AND DATE_TIME

ORDER BY SOMEVALUES DESC

) AS TEMPT2

GROUP BY HOUR(DATE_TIME)) AS MAXVALTABLE

ON MINVALTABLE.MINHOUR=MAXVALTABLE.MAXHOUR;

查询应输出这里,

MINHOUR | MINVALUES | MINDATETIME | MAXHOUR | MAXVALUES | MAXDATETIME

13 | 35 | 2012-10-05 13:20:00 | 13 | 50 | 2012-10-05 13:00:00

15 | 20 | 2012-10-05 15:00:00 | 15 | 45 | 2012-10-05 15:25:00

请让我知道是否我错过了任何东西,或者如果有更好的方法做到这一点。

据我了解,查询同样可以白天使用组,一个月等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值