【问题标题】:Oracle Apex Bar Chart with Days of Week Aggregate包含星期聚合的 Oracle Apex 条形图
【发布时间】:2021-09-07 09:07:51
【问题描述】:

我正在尝试创建一个条形图(使用 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'), TO_CHAR(ABD_DATE, '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的错误还是设计器的设置?

【问题讨论】:

    标签: charts aggregate oracle-apex dayofweek


    【解决方案1】:

    我创建了示例数据来演示您的示例。 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, 'D') day_number, TO_CHAR(sysdate+1, 'DY') day_name, 4 count_dow
        from dual
        union
        select TO_CHAR(sysdate+2, 'D') day_number, TO_CHAR(sysdate+2, 'DY')day_name, 3 count_dow
        from dual
        union
        select TO_CHAR(sysdate+3, 'D') day_number, TO_CHAR(sysdate+3, 'DY')day_name, 2 count_dow
        from dual
        union
        select TO_CHAR(sysdate+4, 'D') day_number, TO_CHAR(sysdate+4, 'DY')day_name, 1 count_dow
        from dual
        union
        select TO_CHAR(sysdate+5, 'D') day_number, TO_CHAR(sysdate+5, 'DY')day_name, 4 count_dow
        from dual
        union
        select TO_CHAR(sysdate+6, 'D') day_number, TO_CHAR(sysdate+6, 'DY')day_name, 8 count_dow
        from dual
        union
        select TO_CHAR(sysdate+3, 'D') day_number, TO_CHAR(sysdate+3, 'DY')day_name, 2 count_dow
        from dual
        union
        select TO_CHAR(sysdate+4, 'D') day_number, TO_CHAR(sysdate+4, 'DY')day_name, 1 count_dow
        from dual
        union
        select TO_CHAR(sysdate+5, 'D') day_number, TO_CHAR(sysdate+5, 'DY')day_name, 4 count_dow
        from dual
        union
        select TO_CHAR(sysdate+6, 'D') day_number, TO_CHAR(sysdate+6, 'DY')day_name, 8 count_dow
        from dual
    )
    group by day_number, day_name
    order by day_number;
    

    我设置了标签和值属性:

    这是生成的图表:

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

    【讨论】:

    • 感谢您的帮助。看来我应该按照您的建议将系列名称保留为“选择”,并且它适用于原始 SQL。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2022-10-08
    • 1970-01-01
    • 2015-05-13
    • 2017-12-23
    相关资源
    最近更新 更多