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

SQL新手求助:统计各分支下每个商品的关联位置数量

问题解决:统计各分支商品的关联位置总数

原SQL语句的问题

你的原语句存在两个关键问题:

  • SELECT子句中包含了a.Loc,但GROUP BY仅按Branch和Item分组,在标准SQL模式下会报错(非聚合列必须出现在GROUP BY列表中)。
  • COUNT(a.Branch||a.Item)的写法冗余,分组已经限定了Branch和Item的组合,直接统计位置相关的数量即可。

两种解决方案

根据你是否需要显示具体位置,提供两种写法:

方案1:仅统计每个分支-商品的位置总数(不显示具体Loc)

如果只需要分支、商品、对应位置总数的结果集,直接按Branch和Item分组统计即可:

SELECT
  Branch,
  Item,
  -- 如果同一分支-商品下可能存在重复的Loc记录,用COUNT(DISTINCT Loc)去重;无重复则用COUNT(*)
  COUNT(DISTINCT Loc) AS LocCount
FROM BranchInventoryFile
GROUP BY Branch, Item

方案2:显示每个具体位置,同时附带对应分支-商品的位置总数

如果需要保留每条记录的具体位置,同时显示该商品在对应分支下的总位置数,用窗口函数更高效:

SELECT
  Branch,
  Item,
  Loc,
  COUNT(DISTINCT Loc) OVER (PARTITION BY Branch, Item) AS LocCount
FROM BranchInventoryFile

这里PARTITION BY Branch, Item会将数据按分支和商品分组,窗口函数COUNT(DISTINCT Loc)计算每个分组内的位置总数,每条记录都会带上这个总数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:30:46