首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按小时优化组查询

按小时优化组查询
EN

Stack Overflow用户
提问于 2017-04-25 01:33:35
回答 1查看 37关注 0票数 0

请帮助优化我的查询。看上去太笨重了。我想在sql中有更好的方法来处理小时(日期时间)。

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

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

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-25 01:42:25

你想从这样的事情开始:

代码语言:javascript
复制
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;

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43600166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档