sql - 使用SQL语句构造聚合器计算矩阵的数据总和
问题描述
我最近尝试构建一个聚合器来计算整个表数据的总和。你有什么意见吗?
以下是我的表结构和数据:</p>
CREATE TABLE matrix (
id INT NOT NULL PRIMARY KEY UNIQUE,
room INT NOT NULL,
salary INT NOT NULL,
time INT NOT NULL);
id | room | salary | time
----+------+--------+------
1 | 101 | 100 | 7
2 | 205 | 150 | 8
3 | 304 | 160 | 7
4 | 106 | 200 | 8
我想通过构造一个聚合器来计算整个表数据的总数,使其输出如下所示:
sum
------
1366
有什么好的解决办法吗?
解决方案
您没有告诉我们您正在使用的 DBMS,但在标准 SQL 中,您可以使用横向连接“取消透视”列,然后对结果求和:
select sum(t.val)
from matrix
cross join lateral ( values (room), (salary), (time) ) as t(val);
推荐阅读
- c# - 当我尝试将 SaveChanges() 保存到上下文时,EF 中的“更新条目时发生错误”
- c++ - 如何让 if() 由 && 而不是 || 分割
- java - spring boot 跟踪更新值
- go - nano 上的 golang 格式搞砸了,而在 vscode 上还可以。nano 格式被推送到 git
- google-maps - 向数据层添加几何图形 - 如何在添加过程中设置特征样式?
- php - 在 localhost laravel 上安装新的 Laravel 源
- sql - ActiveRecord 多对多我应该制作另一个表来保存关系信息吗?
- sql - 在 postgres 中合并查询
- ffmpeg - 高效的命令行来裁剪视频,覆盖另一个裁剪并使用 ffmpeg 缩放结果
- reactjs - 从 fetch 调用变量到 React 渲染函数