MySQL多个组与日期

时间:2016-09-28 16:36:54

标签: mysql sql database

我有以下带有示例内容的数据库: Database with content

现在我希望每个工作日(星期一,...,星期日)的某个siteid对于每天的tsegment-TIME(独立日期)平均类别。

我必须从tstamp或tsegment解析日期。基本上工作。 然后我必须解析时间 - 这是行不通的。不知道为什么。 我猜测是因为平日的小组。但我不知道如何解决它。

这是我的疑问:



SELECT 
siteid, 
DAYNAME(STR_TO_DATE(tstamp, "%Y-%m-%d")) as Day,
STR_TO_DATE(tsegment,'%h:%i:%s') as Segment, 
AVG(category)

FROM `ITODDB_Occupancy` 

WHERE siteid = 350 

GROUP BY
Segment, Day




结果是

enter image description here

我想要这样的输出:



siteid    Day     Segment    AVG(Category)
350       Monday  11:10:00  3.987
350       Monday  11:15:00  2.123
350       Tuesday 08:00:00  3.999
350       Tuesday 09:35:00  2.500
...      ...      ...      ...
350       Sunday  03:45:00  1.432
350       Sunday  03:55:00  1.555




1 个答案:

答案 0 :(得分:0)

从我看过和使用的内容来看,TIMESTAMP类型可能会因STR_TO_DATE而有点不稳定。相反,请使用FROM_UNIXTIME / DATE_FORMAT

的组合

DATE_FORMAT(FROM_UNIXTIME('2016-01-20T11:30:20'), '%h:%i:%s')

这应该可以满足您的需求。

示例:

SELECT 
siteid, 
DAYNAME(STR_TO_DATE(tstamp, "%Y-%m-%d")) as Day,
DATE_FORMAT(FROM_UNIXTIME(tsegment), '%h:%i:%s') as Segment, 
AVG(category)

FROM `ITODDB_Occupancy` 

WHERE siteid = 350 

GROUP BY
Segment, Day