如何实现按相同字段分组并添加计数字段的SQL查询?
解决重复组合分组统计的SQL方案
嘿,这事儿好办!你遇到的是典型的分组统计需求,咱们用GROUP BY配合聚合函数就能轻松搞定。
首先,你的原查询返回了重复的market_details_id和commodity_details_id组合,要统计每组的行数,对应的SQL可以这么写:
SELECT MD_CD.market_details_id, MD_CD.commodity_details_id, COUNT(*) AS counter FROM MarketDetails_CommodityDetails AS MD_CD GROUP BY MD_CD.market_details_id, MD_CD.commodity_details_id
简单拆解下逻辑:
GROUP BY market_details_id, commodity_details_id:把这两个字段值完全匹配的行归为同一组,重复的组合会被自动合并。COUNT(*) AS counter:统计每组包含的总行数,用counter作为统计字段的别名,正好对应你想要的输出列。
如果你的数据库对GROUP BY有严格的字段匹配要求(比如某些SQL模式下),这个语句也完全符合规范——SELECT里的非聚合字段都已经包含在GROUP BY列表里了。
执行这个查询后,就能得到你期望的结果:每个唯一的market_details_id+commodity_details_id组合占一行,counter字段会显示该组合出现的次数,比如你提到的market_details_id=12、commodity_details_id=42就会显示counter=2。
内容的提问来源于stack exchange,提问作者AndreaNobili
相关产品推荐
相关产品推荐

