sql - 如何在不对 SQL 中的结果进行分组的情况下应用 SUM 运算?

标签 sql mysql group-by

我有一张这样的 table :

+----+---------+----------+
| id | group   | value    |
+----+---------+----------+
|  1 | GROUP A | 0.641028 | 
|  2 | GROUP B | 0.946927 | 
|  3 | GROUP A | 0.811552 | 
|  4 | GROUP C | 0.216978 | 
|  5 | GROUP A | 0.650232 | 
+----+---------+----------+

如果我执行以下查询:

SELECT `id`, SUM(`value`) AS `sum` FROM `test` GROUP BY `group`;

显然,我明白了:

+----+-------------------+
| id | sum               |
+----+-------------------+
|  1 |  2.10281205177307 | 
|  2 | 0.946927309036255 | 
|  4 | 0.216977506875992 | 
+----+-------------------+

但我需要这样一张 table :

+----+-------------------+
| id | sum               |
+----+-------------------+
|  1 |  2.10281205177307 | 
|  2 | 0.946927309036255 | 
|  3 |  2.10281205177307 | 
|  4 | 0.216977506875992 | 
|  5 |  2.10281205177307 | 
+----+-------------------+

显式重复求和的行。

有没有办法在不使用多个(嵌套)查询的情况下获得此结果?

最佳答案

IT 将取决于您的 SQL 服务器,在 Postgres/Oracle 中我将使用窗口函数。在 MySQL 中……不可能的 afaik。

也许你可以这样伪造它:

SELECT a.id, SUM(b.value) AS `sum`
FROM test AS a
JOIN test AS b ON a.`group` = b.`group`
GROUP BY a.id, b.`group`;

关于sql - 如何在不对 SQL 中的结果进行分组的情况下应用 SUM 运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2381053/

相关文章:

python - Pandas groupby 获取行匹配条件的组的第一个元素

MySQL - 选择第一个/最后一个不同的行

mysql - 识别 SQL 中匹配次数最多的列中的 ID 对

mysql - 如何将 MySQL 字段设置为另一个字段的动态生成值?

PHP/MYSQL 安全问题(在线订单、管理员门户)

MySQL分组通过选择group by主键未排序子查询结果的结果

sql - 如何在输出期间更改值名称

mysql - 需要一些更新脚本方面的帮助

php - Laravel MySQL 匹配不返回结果

SQL - 特定分组依据