发布网友 发布时间:2022-05-03 09:19
共3个回答
懂视网 时间:2022-05-03 13:40
题目
有如下一张表T
想要得到如下结果:
解释:T表中的Result列的第1行始终保持为1,后面的数据行=上一行的结果+上一行的NUM值,例如ID为2的Result为6=1+5,ID为3的Result为9=6+3,以此类推。
该如何写这个SQL?
读者可以试着自己思考写下,再往下翻... 如有不同解题方式,大家一起交流。
解答:
WITH T AS (SELECT 1 ID, 5 NUM FROM DUAL UNION ALL SELECT 2 ID, 3 NUM FROM DUAL UNION ALL SELECT 3 ID, 12 NUM FROM DUAL UNION ALL SELECT 4 ID, 2 NUM FROM DUAL UNION ALL SELECT 5 ID, 7 NUM FROM DUAL UNION ALL SELECT 6 ID, 9 NUM FROM DUAL), tt (id, num, result) as ( select id,num,1 result from t where id=1 union all select t.id ,t.num,tt.result+tt.num from tt,t where tt.id+1=t.id ) select * from tt;
ID NUM RESULT
1 5 1
2 3 6
3 12 9
4 2 21
5 7 23
6 9 30
如有其它解题思路,欢迎一起交流学习。
SQL每日一题(20200509)
标签:ade 结果 https white 思路 original oracle数据库 sans oracl
热心网友 时间:2022-05-03 10:48
1)Select 存书.书名,存书.数量,销售.金额 From 存书 Inner Join 销售 On 存书.书号 = 销售.书号热心网友 时间:2022-05-03 12:06
我没有直接用表名 ,你自己可以将 存书 ,销售,直接换成英文的表名, 字段 也可以换成列明参考资料:sql