高难度SQL语句
发布网友
发布时间:2022-04-08 11:05
我来回答
共4个回答
热心网友
时间:2022-04-08 12:34
1楼的不用执行,一定是合计积分等于积分加上所有积分的合。
况且原表应该是没有合计积分这一列吧?
select id,积分,(select sum(积分) from jifen_table b where b.id<=a.id) 合计积分 from jifen_table a
热心网友
时间:2022-04-08 13:52
select a.id,a.pts,sum(b.smpts)
from table a ,(select id,pts as smpts from table ) b
where b.id<=a.id
group by a.id
测试通过
热心网友
时间:2022-04-08 15:27
update jifen_table set 合计积分=积分+(select sum(合计积分) from jifen_table)
没有测试
热心网友
时间:2022-04-08 17:18
这个是如何算累计的问题,有多种方法:
这里举一个通用的方法:
SELECT
aa.id
, aa.积分
, SUM(bb.积分) AS 累计积分
FROM jifen_table AS aa
INNER JOIN jifen_table AS bb ON bb.id<=aa.id
GROUP BY aa.id, aa.积分
ORDER BY aa.id,aa.积分
;
就是通过jifen_table自关联,来实现累加。
累计其实就是把当前的积分和之前出现过的都加起来,
关联条件:ON bb.id<=aa.id 就是实现这个功能的。
2.方法二:
使用sum()over() 函数。
此方法oracle,db2支持,其他数据库不知道支不支持。
都是一个语句就ok的,不需要3个步骤 :)
我的空间有类似的案例:
http://hi.baidu.com/rsnetwork/blog/item/297c2301c57cea001c958305.html