mysql查询:最近三个​​月的数据

Posted

技术标签:

【中文标题】mysql查询:最近三个​​月的数据【英文标题】:mysql query: data from last three months 【发布时间】:2011-08-09 13:30:48 【问题描述】:

我正在查询过去三个月的一些数据,唯一的问题是我得到的一些数据在某些月份没有条目。由于他们没有条目,我想将该月标记为 0。

我的第一个想法是创建一个临时表,然后加入我需要的标签。但这并没有成功。

谁能想到办法做到这一点?

示例:我想要最近 3 个月的数据,并且正在获取

'Component', 1325.1988
'Component', 554.1652
'Component', 103.6668
'Development', 203.4163
'Development', 59.4500
'Development', 19.7498
'Flash Assets', 285.5334
'Flash Assets', 302.1501
'Flash Assets', 61.1836
'Release', 0.6000
'Release', 2.3666
'Repackage', 416.2169
'Repackage', 5195.0839
'Repackage', 4.5667
'Source Diff', 1.9000

'Source Diff' and 'Release' 没有 3 个条目。

谢谢

查询

SELECT bt.name as 'Labels', 
SUM(TIME_TO_SEC(TIMEDIFF(bs.eventtime, b.submittime))/60) AS 'Data' 
FROM builds b JOIN buildstatuses bs ON bs.buildid = b.id JOIN buildtypes bt 
ON bt.id = b.buildtype WHERE DATE(b.submittime) 
BETWEEN DATE_SUB(CURDATE(), INTERVAL 2 MONTH) AND DATE(CURDATE()) 
AND bs.status LIKE 'Started HANDLER' AND b.buildtype != 11 
AND b.buildtype != 5 AND b.buildtype != 4 GROUP BY bt.name, MONTH(b.submittime);

表架构

构建

+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| id            | int(11)          | NO   | PRI | NULL    | auto_increment |
| submittime    | datetime         | NO   |     | NULL    |                |
| buildstatus   | int(11)          | NO   |     | NULL    |                |
| buildtype     | varchar(20)      | NO   |     | NULL    |                |
| buildid       | int(11)          | NO   |     | NULL    |                |
+---------------+------------------+------+-----+---------+----------------+

构建类型

+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| id            | int(11)          | NO   | PRI | NULL    | auto_increment |
| name          | varchar(200      | NO   |     | NULL    |                |
+---------------+------------------+------+-----+---------+----------------+

构建状态

+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| id         | int(11)  | NO   | PRI | NULL    | auto_increment |
| buildid    | int(11)  | NO   | MUL | NULL    |                |
| eventtime  | datetime | NO   |     | NULL    |                |
+------------+----------+------+-----+---------+----------------+

【问题讨论】:

您可以发布您使用的表架构和查询吗? Sjoerd 提供了一些审查链接。这种方法通常称为“理货表”,细节可能会有所不同。 【参考方案1】:

这里有一些类似的问题:

How to get values for every day in a month Group by day and still show days without rows? mysql: filling empty fields with zeroes when using GROUP BY

【讨论】:

以上是关于mysql查询:最近三个​​月的数据的主要内容,如果未能解决你的问题,请参考以下文章

MySQL查询一年一周三个月的数据

MYSQL查询一周内的数据(最近7天的)怎么写

MYSQL查询一周内的数据(最近7天的)怎么写

SQL查询最近三个月的数据(查询最近几天,几

mysql查询每个月的数据数量?

mysql查询近半年每个月的总记录数