Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按小时优化分组查询_Sql_Oracle - Fatal编程技术网

Sql 按小时优化分组查询

Sql 按小时优化分组查询,sql,oracle,Sql,Oracle,请帮助优化我的查询。它看起来太笨重了。 我想有一种更好的方法可以在sql中使用小时datetime 有一个表dauditnew已填充,填充日期时间存储在auditdate列中 查询返回按小时计数的行数 SELECT t.Hour, COUNT(t.Hour) as Count FROM dauditnew d, (SELECT 0 as Hour FROM DUAL UNION SELECT 1 FROM DUAL UNION SELECT 2 FROM DUAL UN

请帮助优化我的查询。它看起来太笨重了。 我想有一种更好的方法可以在sql中使用小时datetime

有一个表dauditnew已填充,填充日期时间存储在auditdate列中

查询返回按小时计数的行数

SELECT t.Hour, COUNT(t.Hour) as Count  FROM dauditnew d, 
  (SELECT 0 as Hour  FROM DUAL UNION 
   SELECT 1 FROM DUAL UNION 
   SELECT 2 FROM DUAL UNION 
   SELECT 3 FROM DUAL UNION 
   SELECT 4 FROM DUAL UNION 
   SELECT 5 FROM DUAL UNION 
   SELECT 6 FROM DUAL UNION 
   SELECT 7 FROM DUAL UNION 
   SELECT 8 FROM DUAL UNION 
   SELECT 9 FROM DUAL UNION 
   SELECT 10 FROM DUAL UNION 
   SELECT 11 FROM DUAL UNION 
   SELECT 12 FROM DUAL UNION 
   SELECT 13 FROM DUAL UNION 
   SELECT 14 FROM DUAL UNION 
   SELECT 15 FROM DUAL UNION 
   SELECT 16 FROM DUAL UNION 
   SELECT 17 FROM DUAL UNION 
   SELECT 18 FROM DUAL UNION 
   SELECT 19 FROM DUAL UNION 
   SELECT 20 FROM DUAL UNION 
   SELECT 21 FROM DUAL UNION 
   SELECT 22 FROM DUAL UNION 
   SELECT 23 FROM DUAL) t
where 
  d.auditdate >= TO_DATE('25.04.2017 ' || t.Hour, 'dd.mm.yyyy HH24') and 
  d.auditdate <= TO_DATE('25.04.2017 ' || t.Hour || '_59_59', 'dd.mm.yyyy HH24_MI_SS')
group by t.Hour 

您希望从以下内容开始:

select trunc(d.auditdate, 'HH24') as hh, count(*)
from dauditnew d
where d.auditdate >= '2017-04-25' and d.auditdate < '2017-04-26'
group by trunc(d.auditdate, 'HH24')
order by hh;

如果这错过了几个小时,那么您可以使用左连接作为子查询。

编辑您的问题,并提供示例数据和所需结果。此问题中没有PL/SQL-完全是SQL。非常感谢