我要求在Apex 4.1中构建条形图,该条形图将在24小时内计算所有操作实例并显示按小时分组的数据。 条形图查询基于三个字段。
Select '' link, to_char(created_on,HH) label, count(id) value from mytable1
where created_on like IN (SELECT LEVEL-1 FROM DUAL CONNECT BY LEVEL <= 24;)
不需要链接,标签将是每小时所以00,01,02,03,04,... 23和值将是count(id)
表一有名为created_on的列,它捕获时间戳。我通过执行to_char(created_on,HH)
捕获小时值。但是此查询将仅导致发生(存在)的事件,因此如果在10处没有ID,那么在那段时间内将没有结果。我需要某种包含在该查询上的包装机制,它将从0到23计数。
任何有关构建查询或指导我执行函数的帮助都非常感谢。
答案 0 :(得分:2)
此查询将创建一个1-24的计数器表,我非常确定它适用于10g:
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 24;
要获得0-23的计数器表,只需从LEVEL
中减去1:
SELECT LEVEL-1 FROM DUAL CONNECT BY LEVEL <= 24;
使用以上作为&#34; main&#34;表格和LEFT JOIN
到您的表格:
SELECT
whatever AS link,
Ctr.HourValue AS label,
COUNT(id) AS value
FROM
(SELECT LEVEL-1 AS HourValue
FROM DUAL
CONNECT BY LEVEL <= 24) Ctr
LEFT JOIN mytable1 ON ctr.HourValue = TO_CHAR(mytable1.created_on, 'HH24')
WHERE <whatever>
GROUP BY whatever, Ctr.HourValue
注意:
HH24
格式代码,因为HH
使用12小时制。EXTRACT
功能数小时:... ON ctr.HourValue = EXTRACT(HOUR FROM mytable1.created_on)
。我发现这更具可读性,但这是主观的。没有&#34;最好的方式&#34;因此,请使用您喜欢的内容 - 您是那些不能维持查询的人:)