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

如何在ORDER BY中使用不同聚合函数生成的两列实现销售数据排序

你可以通过窗口聚合函数计算每个销售人员的总营收,将其作为第一排序条件,再按单客户营收降序排序即可实现需求。

方案1:窗口函数实现(兼容MySQL8.0+、PostgreSQL、SQL Server、Oracle等所有支持窗口函数的主流数据库)

如果不需要在结果中展示销售人员总营收,可直接将计算逻辑写在ORDER BY子句中:

SELECT 
    ORD.SALESPERSONPERSONID,  
    ORD.CUSTOMERID,
    SUM(LINE.QUANTITY * LINE.UNITPRICE) AS SALESPERSON_CUSTOMER_REVENUE
FROM SALES_ORDERS ORD
INNER JOIN SALES_ORDERLINES LINE
    ON ORD.ORDERID = LINE.ORDERID
GROUP BY ORD.SALESPERSONPERSONID, ORD.CUSTOMERID
ORDER BY 
    -- 第一排序:按销售人员总营收降序
    SUM(SUM(LINE.QUANTITY * LINE.UNITPRICE)) OVER (PARTITION BY ORD.SALESPERSONPERSONID) DESC,
    -- 第二排序:同销售下按单客户营收降序
    SALESPERSON_CUSTOMER_REVENUE DESC

如果需要在结果中展示总营收,可将窗口函数写在SELECT字段中:

SELECT 
    ORD.SALESPERSONPERSONID,  
    ORD.CUSTOMERID,
    SUM(LINE.QUANTITY * LINE.UNITPRICE) AS SALESPERSON_CUSTOMER_REVENUE,
    SUM(SUM(LINE.QUANTITY * LINE.UNITPRICE)) OVER (PARTITION BY ORD.SALESPERSONPERSONID) AS SALESPERSON_TOTAL_REVENUE
FROM SALES_ORDERS ORD
INNER JOIN SALES_ORDERLINES LINE
    ON ORD.ORDERID = LINE.ORDERID
GROUP BY ORD.SALESPERSONPERSONID, ORD.CUSTOMERID
ORDER BY SALESPERSON_TOTAL_REVENUE DESC, SALESPERSON_CUSTOMER_REVENUE DESC

方案2:子查询关联实现(兼容不支持窗口函数的低版本数据库)

SELECT 
    t1.SALESPERSONPERSONID,
    t1.CUSTOMERID,
    t1.SALESPERSON_CUSTOMER_REVENUE
FROM (
    -- 计算每个销售对应单客户的营收
    SELECT 
        ORD.SALESPERSONPERSONID,  
        ORD.CUSTOMERID,
        SUM(LINE.QUANTITY * LINE.UNITPRICE) AS SALESPERSON_CUSTOMER_REVENUE
    FROM SALES_ORDERS ORD
    INNER JOIN SALES_ORDERLINES LINE
        ON ORD.ORDERID = LINE.ORDERID
    GROUP BY ORD.SALESPERSONPERSONID, ORD.CUSTOMERID
) t1
INNER JOIN (
    -- 计算每个销售的总营收
    SELECT 
        ORD.SALESPERSONPERSONID,
        SUM(LINE.QUANTITY * LINE.UNITPRICE) AS TOTAL_REVENUE
    FROM SALES_ORDERS ORD
    INNER JOIN SALES_ORDERLINES LINE
        ON ORD.ORDERID = LINE.ORDERID
    GROUP BY ORD.SALESPERSONPERSONID
) t2 ON t1.SALESPERSONPERSONID = t2.SALESPERSONPERSONID
ORDER BY t2.TOTAL_REVENUE DESC, t1.SALESPERSON_CUSTOMER_REVENUE DESC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:12:03