sql - 如果总计为 0,则删除结果组
问题描述
我正在使用下表创建一个堆积条形图 - 它比这个大一点:
ID | Name | foodEaten | total
1 | Sam | Burger | 3
1 | Sam | Pizza | 1
1 | Sam | Kebab | 0
1 | Sam | Cheesecake| 3
1 | Sam | Sandwich | 5
2 | Jeff | Burger | 0
2 | Jeff | Pizza | 0
2 | Jeff | Kebab | 0
2 | Jeff | Cheesecake| 0
2 | Jeff | Sandwich | 0
我需要找到一种方法来删除像 Jeff 这样的结果。他吃的东西的总和是0。我想不出最简单的方法来实现这一点。我已经尝试按 Id 对整个结果进行分组并创建一个总数,但它只是没有发生。
如果这个人总共吃了0个食物,那么他需要被排除在外。但如果他没有,而且他没有吃任何烤肉串,如我上表所示,这需要包含在结果中!
所以需要的输出是:
ID | Name | foodEaten | total
1 | Sam | Burger | 3
1 | Sam | Pizza | 1
1 | Sam | Kebab | 0
1 | Sam | Cheesecake| 3
1 | Sam | Sandwich | 5
解决方案
假设您想要显示的数据,而不是聚合出来然后排除:
WITH CTE AS (
SELECT ID,
[Name],
foodEaten,
total,
SUM(total) OVER (PARTITION BY [Name]) AS nameTotal
FROM YourTable)
SELECT ID,
[Name],
foodEaten,
total
FROM CTE
WHERE nameTotal > 0;
推荐阅读
- c# - 如何滚动元素,如 x-table-container (selenium c#)
- javascript - 当我把loading放到组件中时,源代码没有出现在Next Js中
- networking - 在 tshark 中定义 IP 范围
- javascript - ReactJS/MaterialUI 中的三角形按钮滑块
- python - 将 Python 中的循环导出到 Excel
- javascript - Firebase Google 登录令牌过期问题
- ios - 如何使用 RxDataSource 制作动态部分?
- python - 使用 .datetime 查找时间是在另一个时间之前还是之后
- php - 给定 $q 搜索查询的 php scandir
- python - TF1 模型在 CPU 上的内存泄漏