微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不将结果分组为SQL的情况下应用SUM操作?

如何解决如何在不将结果分组为SQL的情况下应用SUM操作?

IT将取决于您的sql Server,在Postgres / Oracle中,我将使用Window Functions。在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`;

解决方法

我有一张这样的桌子:

+----+---------+----------+
| 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 | 
+----+-------------------+

但是我需要一张这样的桌子:

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

汇总行显式重复。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。