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

如何使用SQL窗口函数填充表格同order_id的缺失Country值

填充同一订单ID下的Country缺失值

原始数据

order_idProductsCountry
MB-123BreadUS
MB-123Milk
MB-1256CheeseUK
MB-1256Tomato Sauce
MB-1256Milk

需求说明

需将上述表格中Country列的缺失值,填充为对应同一order_id的Country名称。

期望结果

order_idProductsCountry
MB-123BreadUS
MB-123MilkUS
MB-1256CheeseUK
MB-1256Tomato SauceUK
MB-1256MilkUK

解决方案

可以利用窗口函数结合聚合函数提取每个订单ID对应的非空Country值,直接替换缺失值。以下是通用SQL写法,适配大多数主流数据库(PostgreSQL、MySQL 8.0+、SQL Server等):

SELECT
    order_id,
    Products,
    MAX(Country) OVER (PARTITION BY order_id) AS Country
FROM
    your_table_name;

原理说明

  • PARTITION BY order_id:将数据按订单ID分组,确保只处理同一订单内的行。
  • MAX(Country):在每个分组中自动忽略NULL值,提取唯一的非空Country值。
  • 窗口函数会将该值应用到分组内的每一行,自然填充所有缺失的Country字段。

如果需要结合COALESCE(逻辑等价,写法稍繁琐),也可以这样写:

SELECT
    order_id,
    Products,
    COALESCE(Country, MAX(Country) OVER (PARTITION BY order_id)) AS Country
FROM
    your_table_name;

内容的提问来源于stack exchange,提问作者Dipak Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:31:00