如何按条件分组并统计满足总金额要求的id数量
按ID分组统计总价达标ID数量说明
示例数据
id article price 1 grapes 2 1 oranges 1 1 bananas 0 2 bananas 0 3 grapes 2 3 oranges 1 4 bananas 0 4 peaches 0
需求描述
先按id字段对数据分组,计算每个id对应的price字段总和,再统计总和大于等于1美元的id总数量。
参考示例数据的计算结果为2,符合要求的id为1和3:
id为1的总价为2+1+0=3美元,满足条件id为2仅包含价格为0的香蕉,总价为0,不计入统计id为3的总价为2+1=3美元,满足条件id为4的香蕉和桃子价格均为0,总价为0,不计入统计
常见实现方案
SQL 写法
将代码中的your_table_name替换为实际表名即可:
SELECT COUNT(t.id) AS qualified_id_count FROM ( SELECT id, SUM(price) AS total_price FROM your_table_name GROUP BY id HAVING SUM(price) >= 1 ) t
Python Pandas 写法
import pandas as pd # 构造示例数据,实际使用时替换为自己的数据源即可 df = pd.DataFrame( data=[ [1, "grapes", 2], [1, "oranges", 1], [1, "bananas", 0], [2, "bananas", 0], [3, "grapes", 2], [3, "oranges", 1], [4, "bananas", 0], [4, "peaches", 0] ], columns=["id", "article", "price"] ) # 计算符合条件的id数量 qualified_count = df.groupby("id")["price"].sum().loc[lambda x: x >= 1].count() print(qualified_count) # 输出结果:2
内容的提问来源于stack exchange,提问作者Andres Mora
相关产品推荐
相关产品推荐

