如何在QuickSight中计算去重后的Marks分组求和
问题:按Partner分组计算去重后的Marks总和
原始数据集
| Partner | UserID | Marks | Group |
|---|---|---|---|
| A | 1 | 4 | AM |
| A | 2 | 7 | AM |
| A | 1 | 4 | AM |
| B | 3 | 5 | CM |
| C | 4 | 6 | TM |
| B | 3 | 5 | CM |
需求
按Partner分组,计算去除重复行后的Marks总和。
尝试的方法及错误结果
使用公式:sum(maxOver(Marks, [UserID, Partner], PRE_AGG)),得到错误结果:
| Partner | Marks |
|---|---|
| A | 15 |
| B | 10 |
| C | 6 |
期望的正确结果
| Partner | Marks |
|---|---|
| A | 11 |
| B | 5 |
| C | 6 |
正确计算方法
方法1:SQL先去重再求和
先对重复行(Partner+UserID+Marks完全一致的行)去重,再按Partner分组求和:
SELECT Partner, SUM(Marks) AS Marks FROM ( SELECT DISTINCT Partner, UserID, Marks FROM your_table_name ) AS deduplicated_data GROUP BY Partner
方法2:可视化工具(如QuickSight)计算字段实现
- 创建计算字段
IsUnique,标记唯一行:ifelse(rowNumberOver([Partner, UserID, Marks], []) = 1, 1, 0) - 创建计算字段
DeduplicatedMarks,仅保留唯一行的Marks值:ifelse(IsUnique = 1, Marks, 0) - 按
Partner分组,对DeduplicatedMarks求和即可得到正确结果。
内容的提问来源于stack exchange,提问作者Shan
相关产品推荐
相关产品推荐

