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

如何用BigQuery SQL筛选所有SKU状态均为SpecialOrder的产品

问题描述

现有一张包含Product_ID、SKU_ID、Status字段的表,其中SKU是产品的子项(例如T恤产品的不同颜色对应不同SKU),表数据如下:

Product_ID, SKU_ID, Status
1           1       InStock
1           2       SpecialOrder
2           3       SpecialOrder
2           4       SpecialOrder
3           5       InStock

需求为:找出所有SKU的Status均为SpecialOrder的产品(示例中仅产品2符合)。

目前已通过WITH子句创建仅包含Status='SpecialOrder'数据的表别名并关联主表,得到如下中间结果,但不知如何完成最终筛选,或想确认当前思路是否可行:

Product_ID, SKU_ID, Status,       Product_ID, SKU_ID, Status
null,       null,   null          1           1       InStock
1           2       SpecialOrder  1           2       SpecialOrder
2           3       SpecialOrder  2           3       SpecialOrder
2           4       SpecialOrder  2           4       SpecialOrder
null,       null,   null,         3           5       InStock
解决方案

你的思路方向没问题,但可以更简洁。给你两种靠谱的实现方法:

方法一:分组直接筛选

直接按Product_ID分组,筛选出该产品下没有非SpecialOrder状态的SKU即可:

SELECT Product_ID
FROM your_table_name
GROUP BY Product_ID
HAVING COUNT(CASE WHEN Status != 'SpecialOrder' THEN 1 END) = 0;

原理很简单:用CASE语句统计每个产品里状态不是SpecialOrder的SKU数量,数量为0就说明这个产品的所有SKU都是SpecialOrder。

方法二:基于你的现有思路优化

如果想继续用WITH子句的思路,可以这么调整:

  1. 先统计每个产品的总SKU数
  2. 再统计每个产品里状态为SpecialOrder的SKU数
  3. 筛选两者数量相等的产品
WITH special_sku AS (
    SELECT Product_ID, COUNT(SKU_ID) AS special_count
    FROM your_table_name
    WHERE Status = 'SpecialOrder'
    GROUP BY Product_ID
),
total_sku AS (
    SELECT Product_ID, COUNT(SKU_ID) AS total_count
    FROM your_table_name
    GROUP BY Product_ID
)
SELECT s.Product_ID
FROM special_sku s
JOIN total_sku t ON s.Product_ID = t.Product_ID
WHERE s.special_count = t.total_count;

这种方式和你的初始思路兼容,只是调整了关联后的筛选逻辑,同样能精准找出目标产品。

关于你当前的中间结果

你现在的关联(应该是左连接)产生了带null的行,这些行对应主表中存在但special_sku表没有的SKU。如果非要基于这个结果筛选,可以找那些Product_ID对应的所有行里,左表的Product_ID没有null的产品——但这种方法效率不如上面两种,因为要处理更多冗余数据,不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:15