在指定的时间限制内生成一天的每分钟字符串
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*/
这对我有用,但是
- 我不能依赖 SOME_LARGE_TABLE_B 来生成会议记录
因为它可能在未来的某个时候没有记录
- 查询看起来不像是专业的解决方案。
有更简单的方法吗?
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
我的目标是像这样生成 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*/
这对我有用,但是
- 我不能依赖 SOME_LARGE_TABLE_B 来生成会议记录 因为它可能在未来的某个时候没有记录
- 查询看起来不像是专业的解决方案。
有更简单的方法吗?
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