当前位置: 首页 > 面试题库 >

将记录按小时或按天分组,并在mysql中用零或空值填充空白

狄令
2023-03-14
问题内容

我写了一个查询,每小时对记录进行计数:

select TO_CHAR(copied_timestamp, 'YYYY-MM-DD HH24'),count(*) from req group by
TO_CHAR(copied_timestamp, 'YYYY-MM-DD HH24');

结果是:

2012-02-22 13    2280
2012-02-22 15    1250
2012-02-22 16    1245
2012-02-22 19    1258

但是我需要这样的结果:

2012-02-22 13    2280
2012-02-22 14    0
2012-02-22 15    1250
2012-02-22 16    1245
2012-02-22 17    0
2012-02-22 18    0
2012-02-22 19    1258

我也有按天和月分组的这些查询!

select TO_CHAR(copied_timestamp, 'YYYY-MM-DD'),count(*)  from req
group by TO_CHAR(copied_timestamp, 'YYYY-MM-DD');

select TO_CHAR(copied_timestamp, 'YYYY-MM'),count(*)  from req
group by TO_CHAR(copied_timestamp, 'YYYY-MM');

我也需要用0或null来填补他们的空白。任何帮助,我们真的很感激。

注意:在oracle中使用此问题有一个答案,CONNECT BY但是我需要Mysql中的答案,因为Mysql不支持CONNECT BY


问题答案:

我创建了一个名为TBL_NUMBERS的表

CREATE TABLE `TBL_NUMBER` (`n` int(11) NOT NULL)

并插入从1到1000的记录。现在,我可以使用此查询生成任何类型的日期范围:

SELECT '2012-06-21' + INTERVAL n-1 [DAY | HOUR | MINUTE] or as dateRange
 FROM TBL_NUMBER
WHERE '2012-06-21' + INTERVAL n-1 [DAY | HOUR | MINUTE] <= '2012-06-23';

然后,我可以将此表与我的结果结合起来以填补日期空白。如果我需要超过1000个日期范围,我可以在中插入更多记录TBL_NUMBER

如果您有更好的主意,我很想知道;)



 类似资料:
  • 问题内容: 我有一个数据库: 我想选择所有条目,但有一个例外: 与的所有条目均应分组 *与的 *最后一个条目应在之后 这是我期望的结果: 到目前为止,我已经做到了这一点(注意:“ change_count” = COUNT): 那就是我得到的: 如您所见,结果有两个问题: 条目按首次出现分组(应为last(最新)) 也被分组(不应该被分组) 我上面描述的任务可以实现吗?我该怎么做? 编辑: 问题答

  • 我想将字符串拆分为固定长度,例如,拆分20个字符,如果拆分后长度小于20个字符,则用最多20个字符的空格填充字符串。 我使用上面的代码按相等大小进行拆分。

  • 问题内容: 我正在尝试按小时使用量从历史记录表中获取报告。表是; 我想通过组和在指定日期范围内的所有记录。 我使用了类似这样的查询,但是它并不能显示全部时间。 仅在有记录时显示。 问题答案: 您现有的查询可以简化为: 要显示 每一个 小时,包括那些没有数据,就需要外,其所有您想要的数据小时表连接。您可以使用以下命令在查询中建立这样的表: 但是,对于没有数据的组的处理实际上是业务逻辑的问题,最好将其

  • 问题内容: 我正在编写一个使用许多不同组件的程序,因此我开始对其使用GridBagLayout。效果很好,但是当我运行程序时,我得到了: 当前布局图 应该将最右边的列表对象直接与其余对象对齐,并填充屏幕的整个宽度。不知道为什么不是。这是相关代码的简短副本(为简化起见,我决定将它们全部放在一个类中): 我包括了所有的NoteBox类,因为它是发生故障的类,并且我认为它是最相关的。 问题答案: 正如M

  • 本文向大家介绍在MySQL中用零填充列的值,包括了在MySQL中用零填充列的值的使用技巧和注意事项,需要的朋友参考一下 为此,请使用零填充的概念。它使用零填充字段的显示值,直到字段定义中设置的显示宽度 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出-

  • 问题内容: 我敢肯定这已经得到回答,但是我找不到我需要的详细信息。 对于分析系统,我需要能够对行进行分组并按 分钟 ,小时,天,月或年对行进行归还。我可以正常工作(下面的示例代码)。 问题是,像大多数图表一样,我需要填补数据不存在的空白(例如,最近3分钟没有行)。我读过有关创建“日历表”并连接该数据的信息,但是我如何才能针对每个刻度有效地做到这一点(例如,一年会比分钟容易得多,因为一分钟需要表中有