在指定的时间限制内生成一天的每分钟字符串

generate each minute string for a day within specified time limit

我的目标是像这样生成 table 中存在的所有记录的每分钟计数。

SELECT
    COUNT(*) as RECORD_COUNT,
    to_Char(MY_DATE,'HH24:MI') MINUTE_GAP
FROM
    TABLE_A
WHERE
    BLAH='Blah! Blah!!'
GROUP BY
    to_Char(MY_DATE,'HH24:MI')

但是,此查询没有提供没有结果的分钟数。

为了获得所需的结果,我将使用以下查询通过在这两个结果之间进行 JOIN 来填补原始查询中的空白。

SELECT
    * 
FROM
    (   SELECT
            TO_CHAR(TRUNC(SYSDATE)+( (ROWNUM-1) /1440) ,'HH24:MI') as MINUTE_GAP,
            0 as COUNT
        FROM
            SOME_LARGE_TABLE_B
        WHERE
            rownum<=1440 
    )
WHERE
    minute_gap>'07:00' /*I want only the data starting from 7:00AM*/

这对我有用,但是

  1. 我不能依赖 SOME_LARGE_TABLE_B 来生成会议记录 因为它可能在未来的某个时候没有记录
  2. 查询看起来不像是专业的解决方案。

有更简单的方法吗?

NOTE:I don't want any new tables created with static values for all the minutes just for one query.

只需生成您的时间戳并将分组数据加入其中即可:

SELECT MINUTE, ....
FROM (
    SELECT TO_CHAR(TO_DATE((LEVEL + 419) * 60, 'SSSSS'), 'HH24:MI') MINUTE /* 07:00 - 23:59 */ FROM DUAL CONNECT BY LEVEL <= 1020)
    LEFT JOIN (
        <your grouped subquery>
    ) ON MINUTE = MINUTE_GAP