c语言sscanf函数的用法是什么
264
2022-08-24
又做了一个很过瘾sql题
作者:三十而立
一个很有趣的sql题 “超难SQL求助,对连续时间区域分组求和”
题目如下
模拟数据如下: 20090901 10 20090902 20 20090903 7 20090904 5 20090906 5 20090908 5 要求每相邻的两天作为一个单位统计,不能连续单天统计 结果如下 20090901+20090902 30 20090903+20090904 12 20090906+20090907 5 20090908+20090909 5
用户用相邻的时间来相加,注意,相邻但不一定是连续的时间。
这里连续记录分组,用oracle里的rownum处理就OK了,相加就用10g的新功能wmsys.wm_concat
得到一下sql
select trunc((rownum-1)/2) no, sum(n), replace(wmsys.wm_concat(to_char(d,'yyyymmdd')),',','+') title from (select d, n from test_a order by d asc) t group by trunc((rownum-1)/2) order by trunc((rownum-1)/2)
实验一下哟。
数据
SQL> select n, to_char(d, 'yyyymmdd') d from test_a order by d asc; N D---------- -------- 12 20090901 14 20090902 14 20090903 11 20090906 12 20090907 13 20090908 14 20090909 15 20090910 16 20090911 17 20090912 18 20090913 N D---------- -------- 19 20090914 已选择12行。
结果
SQL> select trunc((rownum-1)/2) no, sum(n), replace(wmsys.wm_concat(to_char(d,' yyyymmdd')),',','+') title from (select d, n from test_a order by d asc) t group by trunc((rownum-1)/2) order by trunc((rownum-1)/2); NO SUM(N) TITLE ---------- ---------- ------------------------------ 0 26 20090901+20090902 1 25 20090903+20090906 2 25 20090907+20090908 3 29 20090909+20090910 4 33 20090911+20090912 5 37 20090913+20090914 已选择6行。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~