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

如何保留拼接列的同时统计沙发按颜色的采购次数?

解决SQL添加COUNT函数报错及统计采购次数的方案

报错原因

使用COUNT()这类聚合函数时,SELECT子句中所有非聚合列(比如new_product_code)必须出现在GROUP BY子句中,否则数据库无法关联聚合结果与非聚合列,这就是报错的核心原因。

方案一:GROUP BY分组统计(适合汇总行场景)

如果只需要每个颜色对应的拼接编码和总采购次数,可通过GROUP BY分组,将参与拼接的原始列或拼接后的列加入分组条件:

SELECT 
    CONCAT(product_code, product_color) AS new_product_code,
    product_color,
    COUNT(*) AS purchase_count
FROM [dbo].[Furniture]
WHERE product = 'couch'
GROUP BY product_code, product_color

若使用SQL Server 2012及以上版本,也可直接用别名分组:

SELECT 
    CONCAT(product_code, product_color) AS new_product_code,
    product_color,
    COUNT(*) AS purchase_count
FROM [dbo].[Furniture]
WHERE product = 'couch'
GROUP BY new_product_code, product_color

方案二:窗口函数COUNT() OVER()(适合保留原始行场景)

如果需要保留每一条沙发记录,同时在每行显示对应颜色的总采购次数,可使用窗口函数,无需分组:

SELECT 
    CONCAT(product_code, product_color) AS new_product_code,
    product_color,
    COUNT(*) OVER(PARTITION BY product_color) AS purchase_count
FROM [dbo].[Furniture]
WHERE product = 'couch'

PARTITION BY product_color表示按颜色分组统计次数,每行都会显示对应颜色的总采购量,同时保留原始拼接编码和单条记录信息。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:25:22