PieCloudDB Database:按ID分组并基于唯一Record值求和Quantity列
按ID分组对唯一Record对应的Quantity求和
问题数据
原始表格:
| ID | Quantity | Record |
|---|---|---|
| 111 | 8 | ae8 |
| 111 | 1 | aac |
| 111 | 8 | ae8 |
| 111 | 28 | acg |
| 111 | 9 | bbb |
| 128 | 3 | pie |
| 128 | 3 | pie |
需求:按ID分组,仅对唯一的Record值对应的Quantity列求和,预期结果:
| ID | Quantity |
|---|---|
| 111 | 46 |
| 128 | 3 |
解决方案
SQL实现
先通过子查询对ID和Record去重,再分组求和:
SELECT ID, SUM(Quantity) AS Quantity FROM ( SELECT DISTINCT ID, Quantity, Record FROM your_table ) AS unique_records GROUP BY ID;
逻辑说明:
- 子查询用
DISTINCT过滤掉ID+Record重复的行,确保每个Record在对应ID下只保留一条 - 外层查询按
ID聚合,对去重后的Quantity求和得到最终结果
Python Pandas实现
利用drop_duplicates去重后分组求和:
import pandas as pd # 构造数据(实际场景可替换为读取文件) df = pd.DataFrame({ 'ID': [111, 111, 111, 111, 111, 128, 128], 'Quantity': [8, 1, 8, 28, 9, 3, 3], 'Record': ['ae8', 'aac', 'ae8', 'acg', 'bbb', 'pie', 'pie'] }) # 去重+分组求和 result_df = df.drop_duplicates(subset=['ID', 'Record']).groupby('ID')['Quantity'].sum().reset_index() print(result_df)
执行后输出:
ID Quantity 0 111 46 1 128 3
内容的提问来源于stack exchange,提问作者Meliodas Dragon
相关产品推荐
相关产品推荐

