You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX分组柱状图SQL需求:按TYPE总成本排序分组

Oracle APEX分组柱状图SQL实现方案

核心需求

实现按TYPE和NAME分组汇总成本,同时按TYPE的总成本排序,最终适配Oracle APEX的分组柱状图展示要求。

场景说明

现有数据表包含TYPE、NAME、COST三列,需在Oracle APEX中创建分组柱状图:

  • X轴绑定TYPE字段
  • Y轴展示COST数值,按NAME分组区分系列
  • 要求按TYPE的总成本从高到低排序,优先展示成本最高的TYPE

示例数据

TYPE类型NAME名称COST成本
badA500
goodA300
badA1000
very badB200
very goodB2300
goodC400
badA100
very goodC700
goodA800
badA400
very goodC500
goodB300
badC350
badC600
goodB440
badB502
badA300
goodA456
badB340

预期结果(顺序敏感)

TYPE类型NAME名称TYPE和NAME分组成本总和TYPE排名
badA23001
badB8421
badC9501
very goodB23002
very goodC12002
goodA15563
goodB7403
goodC4003
very badB2004

当前代码问题

现有SQL存在逻辑冲突:窗口函数SUM(COST) OVER(PARTITION BY TYPE)不能直接与GROUP BY后的聚合函数混用,且未正确生成TYPE排名,也未给分组成本总和命名。

SELECT
  TYPE,
  NAME,
  SUM(COST) OVER(PARTITION BY TYPE) AS SUM_COST_BY_TYPE,
  SUM(COST)
FROM
  mytable
GROUP BY
  NAME,
  TYPE
ORDER BY
  SUM_COST_BY_TYPE DESC

另外,Oracle APEX的分组柱状图要求数据源必须包含GROUP BY,因此需先完成分组聚合,再通过窗口函数补充TYPE级别的统计数据。

正确SQL实现

通过嵌套子查询分步处理,先完成分组聚合,再计算TYPE总成本与排名,最终按要求排序:

WITH grouped_data AS (
    -- 第一步:按TYPE+NAME分组计算成本总和,满足APEX的GROUP BY要求
    SELECT
        TYPE,
        NAME,
        SUM(COST) AS TYPE_NAME_COST_SUM
    FROM mytable
    GROUP BY TYPE, NAME
),
type_summary AS (
    -- 第二步:基于分组数据计算TYPE总成本和排名
    SELECT
        gd.*,
        SUM(gd.TYPE_NAME_COST_SUM) OVER(PARTITION BY gd.TYPE) AS TYPE_TOTAL_COST,
        DENSE_RANK() OVER(ORDER BY SUM(gd.TYPE_NAME_COST_SUM) OVER(PARTITION BY gd.TYPE) DESC) AS TYPE_RANK
    FROM grouped_data gd
)
-- 第三步:输出匹配预期结果的列,并按TYPE总成本排序
SELECT
    TYPE AS "TYPE类型",
    NAME AS "NAME名称",
    TYPE_NAME_COST_SUM AS "TYPE和NAME分组成本总和",
    TYPE_RANK AS "TYPE排名"
FROM type_summary
ORDER BY TYPE_TOTAL_COST DESC, TYPE, NAME;

代码说明

  1. grouped_data子查询:先按TYPE和NAME分组聚合,得到每个细分组的成本总和,完全符合APEX分组柱状图的数据源要求。
  2. type_summary子查询:用窗口函数计算每个TYPE的总成本,同时通过DENSE_RANK()生成排名(相同总成本的TYPE会获得一致排名)。
  3. 最终查询:重命名列名匹配预期结果,按TYPE总成本降序排序,同时保证同TYPE下的NAME有序。

APEX柱状图配置指引

将上述SQL作为数据源后,在APEX中配置:

  • X轴选择TYPE类型字段
  • Y轴选择TYPE和NAME分组成本总和字段
  • 分组系列选择NAME名称字段
  • 排序规则已在SQL中定义,无需额外配置

内容的提问来源于stack exchange,提问作者Jax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:11:12