我有一张这样的 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/