返回

MySQL 显示销售产品排名和国家总销量

后端

一、查询销售产品排名

为了查询所有时间内,所有产品销售金额占比,并按占比大小降序排序,筛选累计占比在前 80% 的产品,我们可以使用以下查询语句:

SELECT
    product_name,
    SUM(sales_amount) AS total_sales_amount,
    (SUM(sales_amount) / SUM(SUM(sales_amount)) OVER ()) * 100 AS sales_percentage,
    SUM(SUM(sales_amount)) OVER () AS cumulative_sales_amount,
    (SUM(SUM(sales_amount)) OVER () / SUM(SUM(sales_amount)) OVER ()) * 100 AS cumulative_sales_percentage
FROM
    sales_data
GROUP BY
    product_name
ORDER BY
    sales_percentage DESC
LIMIT 80;

在这个查询中,我们首先使用 SUM() 函数计算每个产品的总销售金额。然后,我们使用 SUM(SUM(sales_amount)) OVER () 函数计算所有产品的总销售金额。接下来,我们使用 (SUM(sales_amount) / SUM(SUM(sales_amount)) OVER ()) * 100 计算每个产品的销售金额占比。然后,我们使用 SUM(SUM(sales_amount)) OVER () 函数计算所有产品的累计销售金额。最后,我们使用 (SUM(SUM(sales_amount)) OVER () / SUM(SUM(sales_amount)) OVER ()) * 100 计算每个产品的累计销售金额占比。

二、查询国家总销量

为了查询所有时间内,各个国家的销售情况,并筛选销售合计金额大于 1 的国家,我们可以使用以下查询语句:

SELECT
    country_name,
    SUM(sales_amount) AS total_sales_amount
FROM
    sales_data
GROUP BY
    country_name
HAVING
    SUM(sales_amount) > 1;

在这个查询中,我们首先使用 SUM() 函数计算每个国家的总销售金额。然后,我们使用 GROUP BY 语句将销售数据按国家分组。接下来,我们使用 HAVING 语句筛选出销售合计金额大于 1 的国家。最后,我们使用 ORDER BY 语句将查询结果按总销售金额降序排序。

希望这篇教程对您有所帮助。如果您有任何问题,请随时在评论区留言。