Oracle Apex 条形图与周天数汇总

问题描述

我正在尝试创建一个条形图(使用 Oracle Apex v21.1.0),显示按星期几细分的员工缺勤情况。即一周中每一天的缺勤次数。 我在按时间顺序显示一周中的 7 个小节时遇到问题。 这是我的 sql

-- sql for chart showing count of days absent for each day of week
select 
  TO_CHAR(ABD_DATE,'D') as Day_Index_DOW,TO_CHAR(ABD_DATE,'DY') as Day_Name_DOW,COUNT(TO_CHAR(ABD_DATE,'D')) as Count_DOW  
from F_ABSENT_DAYS
  where ABD_EMP_ID = :P410_EMP_ID
group by TO_CHAR(ABD_DATE,'D'),'DY')
order by TO_CHAR(ABD_DATE,'D') 

图表设置为:

Series Name is set to Day_Index_DOW
Label is set to Day_Name_DOW
Value is set to Count_DOW

这会生成 7 个柱状图,其中包含正确的星期几。 问题是,它们按字母顺序排序(周五、周一、周六...)。 我正在尝试按时间顺序排列它们(星期一、星期二、星期三...)。

sql 中的错误还是设计器中的设置?

解决方法

我创建了示例数据来演示您的示例。 SQL 查询:

select day_number,day_name,sum(count_dow)
from (
    select TO_CHAR(sysdate,'D') day_number,TO_CHAR(sysdate,'DY') day_name,5 count_dow
    from dual
    union
    select TO_CHAR(sysdate+1,TO_CHAR(sysdate+1,4 count_dow
    from dual
    union
    select TO_CHAR(sysdate+2,TO_CHAR(sysdate+2,'DY')day_name,3 count_dow
    from dual
    union
    select TO_CHAR(sysdate+3,TO_CHAR(sysdate+3,2 count_dow
    from dual
    union
    select TO_CHAR(sysdate+4,TO_CHAR(sysdate+4,1 count_dow
    from dual
    union
    select TO_CHAR(sysdate+5,TO_CHAR(sysdate+5,4 count_dow
    from dual
    union
    select TO_CHAR(sysdate+6,TO_CHAR(sysdate+6,8 count_dow
    from dual
    union
    select TO_CHAR(sysdate+3,8 count_dow
    from dual
)
group by day_number,day_name
order by day_number;

我设置了标签和值属性:

enter image description here

这是结果图表: enter image description here

根据我的数据库的 NLS_TERRITORY 参数,一周的第一天是星期日,可能因您而异。