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

如何在SQL中按国家和月份筛选出销量最高的汽车厂商?

解决方法

要获取每个国家、每个月销量最高的厂商,你可以在现有统计逻辑的基础上,使用窗口函数对分组后的销量进行排名,再筛选出排名第一的记录。以下是具体实现:

完整SQL代码

WITH MonthlySales AS (
    SELECT
        Country,
        DATENAME(MONTH, Date) AS Month,
        Manufacturer,
        COUNT(*) AS no_of_sales
    FROM
        your_table_name  -- 替换为你的实际表名
    GROUP BY
        Country,
        DATENAME(MONTH, Date),
        Manufacturer
),
RankedSales AS (
    SELECT
        *,
        ROW_NUMBER() OVER (PARTITION BY Country, Month ORDER BY no_of_sales DESC) AS sales_rank
    FROM
        MonthlySales
)
SELECT
    Country AS 国家,
    Month AS 月份,
    Manufacturer AS 厂商,
    no_of_sales AS 销量
FROM
    RankedSales
WHERE
    sales_rank = 1
ORDER BY
    Country, Month;

代码说明

  • MonthlySales:这部分就是你原本写的统计逻辑,先计算出每个国家、每个月、每个厂商的销售总量。
  • RankedSales:通过ROW_NUMBER()窗口函数,按「国家+月份」进行分组(PARTITION BY),再按销量降序排序,给每个分组内的记录标注排名。
  • 最终筛选:只保留排名为1的记录,就能得到每个国家每个月销量最高的厂商数据。

补充说明

如果存在多个厂商在同一国家、同一月销量相同且均为最高的情况:

  • 用ROW_NUMBER()只会返回其中一条;
  • 若要展示所有并列第一的厂商,可将ROW_NUMBER()替换为RANK()或DENSE_RANK()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:23:41