Sql 如何将此查询从周一第一个排序到周五最后一个?
我想订购此查询并获取本周每天的票款金额,结果如下:Sql 如何将此查询从周一第一个排序到周五最后一个?,sql,oracle,oracle-apex,Sql,Oracle,Oracle Apex,我想订购此查询并获取本周每天的票款金额,结果如下: WEEK_DAY CREATED_TICKETS MONDAY 3 TUESDAY 5 WEDNESDAY 0 FRIDAY 2 我建议: select to_char(created_at, 'day') as week_day, count(*) as created_tickets from freshdesk_api where created_at >= trunc(
WEEK_DAY CREATED_TICKETS
MONDAY 3
TUESDAY 5
WEDNESDAY 0
FRIDAY 2
我建议:
select to_char(created_at, 'day') as week_day, count(*) as created_tickets
from freshdesk_api
where created_at >= trunc(sysdate, 'iw') and created_at < trunc(sysdate, 'iw') + 7
group by to_char(created_at, 'day')
order by min(created_at)
选择将字符(在“天”创建)作为星期,将(*)作为创建的票据计数
来自freshdesk_api
其中在>=trunc(sysdate,'iw')处创建,在
诀窍是在orderby
子句中使用一个聚合函数,该函数应用于date
列
对查询的其他更改:
- 我优化了
子句,因此在被过滤的列上没有应用日期函数;这更有效(有人说谓词是可搜索的)where
- 可能称为
的东西不可为空,因此id
等同于count(*)
(更有效,因为数据库不需要count(id)
-检查每个值)null
- 无需将
和trunc()
嵌套到_char()
在这里就足够了,因为您只关心白天的部分to_char()
select to_char(created_at, 'day') as week_day, count(*) as created_tickets
from freshdesk_api
where created_at >= trunc(sysdate, 'iw') and created_at < trunc(sysdate, 'iw') + 7
group by to_char(created_at, 'day')
order by min(created_at)