如何使用SQL按品牌分组统计对应产品的总数量?
嘿,这个需求其实很好实现,咱们用GROUP BY搭配SUM和DISTINCT就能搞定,我给你捋清楚:
核心思路
要按品牌统计产品总数量,首先得按品牌分组,然后针对每个分组,用SUM(DISTINCT ...)来完成去重后的求和操作——这刚好满足你要求的DISTINCT列结合SUM函数的需求。
示例SQL语句
假设咱们有一张名为products的表,包含brand(品牌名称)、product_id(产品唯一标识)、units(该产品的库存/数量)这几个字段,SQL可以这么写:
SELECT brand AS 'Brand', SUM(DISTINCT units) AS 'Units' FROM products GROUP BY brand ORDER BY Units DESC;
语句解释
GROUP BY brand:把所有记录按品牌分组,确保我们统计的是每个品牌单独的总数SUM(DISTINCT units):先对当前品牌分组下的units值去重(避免重复计算同一款产品的数量),再把去重后的数值求和,得到该品牌的总产品数量ORDER BY Units DESC:可选操作,把结果按数量从多到少排序,方便查看
示例结果
执行后你会得到类似这样的结果(和你期望的格式一致):
| Brand | Units |
|---|---|
| Apple | 32 |
| Android | 29 |
| Samsung | 13 |
额外说明
如果你的场景里,每条记录都是唯一的产品条目(没有重复的产品记录),那其实不需要DISTINCT,直接用SUM(units)就行,但既然要求结合DISTINCT,上面的写法就完全符合要求啦。记得把表名和字段名替换成你实际使用的哦~
内容的提问来源于stack exchange,提问作者ObamoDank
相关产品推荐
相关产品推荐

