如何实现特殊计数:同一ItemId下同颜色仅统计一次
实现特殊颜色计数需求的解决方案
没问题!这个需求本质是同一ItemId下的同一种颜色仅统计一次,核心思路是先对ItemId和Colors的组合去重,再按颜色分组计数。下面是两种常用场景的实现方法:
1. 数据库SQL实现
这是最常见的业务场景,用COUNT(DISTINCT)就能直接达成目标:
SELECT Colors, COUNT(DISTINCT ItemId) AS Count FROM your_table_name -- 替换成你的实际表名 GROUP BY Colors;
逻辑说明:
COUNT(DISTINCT ItemId)会针对每个颜色,只统计关联的不重复ItemId数量,自动忽略同一ItemId下重复出现的同色记录。- 用你提供的测试数据运行后,结果完全符合预期:
Colors Count red 2 blue 2 green 1
2. Python Pandas实现
如果是在数据分析场景中处理这类数据,可以用Pandas的去重+分组计数组合操作:
import pandas as pd # 构造你的测试数据 df = pd.DataFrame({ 'ItemId': [10, 10, 10, 20, 20, 20], 'Colors': ['red', 'red', 'blue', 'red', 'blue', 'green'] }) # 步骤1:按ItemId和Colors去重,保留唯一组合 unique_df = df.drop_duplicates(subset=['ItemId', 'Colors']) # 步骤2:按Colors分组,统计每组的数量 result = unique_df.groupby('Colors').size().reset_index(name='Count') print(result)
运行后会输出:
Colors Count 0 blue 2 1 green 1 2 red 2
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

