0
点赞
收藏
分享

微信扫一扫

计算每个部门中销售额最高的前N个产品,或者进一步分析这些产品的销售趋势。但在这里,我将给出一个稍微不同的例子,即计算每个部门中销售额占比超过特定阈值(比如10%)的产品列表,并显示它们的销售额和占比。

小猪肥 2024-10-12 阅读 5

计算每个部门中销售额最高的前N个产品,或者进一步分析这些产品的销售趋势。但在这里,我将给出一个稍微不同的例子,即计算每个部门中销售额占比超过特定阈值(比如10%)的产品列表,并显示它们的销售额和占比。

SQL 查询示例

WITH DepartmentTotalSales AS (
    SELECT
        d.department_id,
        d.department_name,
        SUM(s.sales_amount) AS total_sales
    FROM
        departments d
    JOIN
        sales s ON d.department_id = s.department_id
    GROUP BY
        d.department_id,
        d.department_name
),
ProductSalesDetail AS (
    SELECT
        d.department_id,
        d.department_name,
        p.product_id,
        p.product_name,
        SUM(s.sales_amount) AS product_sales,
        dts.total_sales,
        ROUND((SUM(s.sales_amount) / dts.total_sales) * 100, 2) AS sales_percentage
    FROM
        sales s
    JOIN
        departments d ON s.department_id = d.department_id
    JOIN
        products p ON s.product_id = p.product_id
    JOIN
        DepartmentTotalSales dts ON d.department_id = dts.department_id
    GROUP BY
        d.department_id,
        d.department_name,
        p.product_id,
        p.product_name,
        dts.total_sales
)
SELECT
    psd.department_name,
    psd.product_name,
    psd.product_sales,
    psd.total_sales,
    psd.sales_percentage
FROM
    ProductSalesDetail psd
WHERE
    psd.sales_percentage > 10 -- 筛选出销售额占比超过10%的产品
ORDER BY
    psd.department_name,
    psd.sales_percentage DESC;

解释

  1. CTE DepartmentTotalSales:
  • 这个CTE与之前的相同,计算了每个部门的总销售额。
  1. CTE ProductSalesDetail:
  • 在这个CTE中,我们计算了每个部门中每个产品的销售额,并计算了这些销售额占部门总销售额的百分比。
  • 注意,这里的SUM(s.sales_amount)是在产品级别进行汇总的,以确保我们得到的是每个产品的总销售额。
  • 我们再次加入了DepartmentTotalSales CTE来获取每个部门的总销售额。
  1. 主查询:
  • ProductSalesDetail CTE中选择数据,但这次我们只关心那些销售额占比超过10%的产品。
  • 结果按部门名称和销售额占比降序排序,以便首先看到占比最高的产品。

这个查询不仅提供了销售额占比的详细信息,还允许我们根据这个占比来筛选出重要的产品。这对于制定销售策略、优化产品组合或识别潜在的增长领域都非常有用。

举报

相关推荐

0 条评论