加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何应用SUM操作而不在SQL中分组结果?

发布时间:2020-12-12 08:46:45 所属栏目:MsSql教程 来源:网络整理
导读:我有一张这样的桌子: +----+---------+----------+| 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 | +----+--
我有一张这样的桌子:
+----+---------+----------+
| 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 | 
+----+-------------------+

其中相加行被明确地重复.

有没有办法获得这个结果,而不使用多个(嵌套)查询?

解决方法

它将依赖于您的SQL Server,在Postgres / Oracle中我将使用Window函数.在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`;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读