sql - 查询以在一列中按相同值求和,并按另一列中的唯一值过滤
问题描述
遇到如下SQL查询问题:
Id, Val1, Val2, Lat, Lon
1, 10.1, 20.3, 30.5, 120.3
2, 12.4, 15.7, 25.3, 110.7
3, 10.1, 24.5, 27.8, 115.0
4, 10.1, 18.9, 25.3, 110.7
获取与 Val1 匹配但具有唯一 Lat、Lon 且与任何其他行不匹配的行的总和(Val2)。此示例中的结果将是 20.3(row1) + 24.5(row 3) = 44.8。第 4 行被忽略,因为它的纬度、经度与第 2 行匹配。
在这种情况下返回总和的查询是什么?
解决方案
此查询应为您提供所需的结果。只要没有匹配并且找到另一个值的值,SUM
它就适用Val2
于每个:Val1
Lat
Lon
Id
SELECT Val1, COALESCE(SUM(Val2), 0) AS "Sum"
FROM data d
WHERE NOT EXISTS(SELECT *
FROM data d1
WHERE d1.Id != d.Id AND d1.Lat = d.Lat AND d1.Lon = d.Lon)
GROUP BY Val1
输出
Val1 Sum
10.1 44.8
推荐阅读
- foreach - 如何在页面视图页面之间传输数据swiftui
- c++ - 更新到 VS 2019 16.11.1 后没有自动构建 QT Cmake 项目
- c# - 当实际的泛型返回类型是方法定义的返回类型的子类时,如何返回泛型?
- powershell - 用于删除或存档旧日志文件的 PowerShell 脚本在本地运行良好,但在远程位置无法运行
- algorithm - 查找未排序数组的最小值和最大值的算法
- flutter - Flutter web 发布模式错误。而其他所有模式都工作正常
- typescript - 参数类型不可分配给参数类型 Config
- ruby-on-rails - Less::ParseError: 在生产环境中编译时变量@box-border-radius 未定义
- android - 如何从 webview 应用程序外部(例如重定向到 Chrome 浏览器)或 webview android 应用程序内部的 blob url 下载 pdf?
- javascript - ReactJS-useEffect 一次又一次地运行