统计同时持有优惠券a和b的非唯一ID数量的技术咨询
统计同时拥有优惠券"a"和"b"的ID数量
方法一:SQL实现
如果数据存储在数据库中,可通过分组筛选完成统计:
查询符合条件的ID列表
SELECT id FROM your_table WHERE coupon IN ('a', 'b') GROUP BY id HAVING COUNT(DISTINCT coupon) = 2;
直接统计符合条件的ID数量
SELECT COUNT(*) AS qualified_id_count FROM ( SELECT id FROM your_table WHERE coupon IN ('a', 'b') GROUP BY id HAVING COUNT(DISTINCT coupon) = 2 ) AS temp_table;
方法二:Python Pandas实现
针对本地数据集(如CSV文件),用Pandas处理更便捷:
import pandas as pd # 读取数据集(替换为你的文件路径和实际列名) df = pd.read_csv('your_data.csv') # 筛选优惠券为a/b的记录,按ID分组统计不同优惠券数量,再筛选出数量为2的ID qualified_ids = df[df['coupon'].isin(['a', 'b'])] \ .groupby('id')['coupon'] \ .nunique() \ .loc[lambda x: x == 2] # 输出结果 print(f"符合条件的ID数量:{len(qualified_ids)}")
核心逻辑
- 先筛选出仅含优惠券"a"或"b"的记录,减少无效计算
- 按ID分组,统计每个ID持有的不同优惠券种类数
- 筛选出种类数等于2的ID,即为同时拥有"a"和"b"的目标ID,最后统计其数量
内容的提问来源于stack exchange,提问作者Kostas Bitos
相关产品推荐
相关产品推荐

