sql 窗口函数 分析函数_sql用sum求总和

sql 窗口函数 分析函数_sql用sum求总和窗口函数_解决SQL累加问题业务场景1:求出每月数量(amount)的累计值这个需求在Excel里面是非常好实现的,一个求和公式直接搞定,但Excel处理的数据量毕竟有限,这个需求在SQL里,怎么来实现呢?——窗口函数。窗口函数1、累计求和基础结构:sum(…)

窗口函数_解决SQL累加问题   业务场景1:求出每月数量(amount)的累计值
sql 窗口函数 分析函数_sql用sum求总和
sql 窗口函数 分析函数_sql用sum求总和   这个需求在Excel里面是非常好实现的,一个求和公式直接搞定,但Excel处理的数据量毕竟有限,这个需求在SQL里,怎么来实现呢?——窗口函数。   窗口函数   1、累计求和   基础结构:sum(…) over(…)   复杂结构:sum(…) over(partition by … order by … rows between … and …)   上面省略号(…)位置所替代的信息:sum(需要求和的列名);partition by 需要分组的列名;order by 需要排序的列名:默认升序(asc),降序为desc;rows between 参与计算的行起始位置 and 参与计算的行终止位置;over括号中的那些,注:over括号中那些,如果没有相应需求,可以省略;   $包括本行和前3行:rows between 6 preceding and current row (如季度求和)   $包括本行和后3行:rows between current row and 3 following   $包括本行和之前所有的行:rows between unbounded preceding and current row   $包括本行和之后所有的行:rows between current row and unbounded following   $从前5行到下1行(总共包含7行数据):rows between 5 preceding and 1 following   例:对2019年和2020年的数量总额按月累计,按年汇总
sql 窗口函数 分析函数_sql用sum求总和
sql 窗口函数 分析函数_sql用sum求总和   2、其他聚合类的窗口函数   平均:avg(…) over(partition by … order by … rows between … and …)(如股票中的7日移动平均)   计数:count(…) over(partition by … order by … rows between … and …)   最大:max(…) over(partition by … order by … rows between … and …)   最小:min(…) over(partition by … order by … rows between … and …)   3、排序类的窗口函数   为查出来的每一行生成一个序号row_number() over( partition by … order by …):序号连续不重复dense_rank() over(partition by … order by …):序号连续,如有两个第一时,紧接着还是第二:rank() over(partition by … order by …):序号跳跃的,如有两个第一,接着就是第三   注:省略号同上,row_number()这个括号里不需要添加字段名,其他两个同样;   mysql中没有现成的位移函数,可以借助添加序号辅助列,求上下两行的差值   业务场景2:请求出2020年每月总的新增量(下表中2019-12-31,表示从开始(时间未知)到2019-12-31的累计值)
sql 窗口函数 分析函数_sql用sum求总和
sql 窗口函数 分析函数_sql用sum求总和   4、平均分组(切片类的)窗口函数   ntile(n) over(partition by …order by …):   返回每行数据当前所在的切片值(即按指定顺序,被分到第几组)   n:表示把数据分成几组,数据不能均分时,前面组的数据多   业务场景3:求充值排名前25%的用户(假设user_name唯一)
sql 窗口函数 分析函数_sql用sum求总和
sql 窗口函数 分析函数_sql用sum求总和   思路:前25%,就是平均分成4份,取第一份   5、位移函数(mysql不支持)   取出同一字段前/后n行的数据,作为单独的列前N行:lag(str,N,default) over(partition by …order by …)后N行:lead(str,N,default) over(partition by …order by …)   str:表示字段名,要取哪一列的数据;   N:表示偏移量,取前/后第几行的数据,默认为1;   default:当取值时,前/后N行已经超出表的范围,或者是没有,这种情况下的默认返回值,不指定的话,返回null;   像前面的业务场景2中,需要计算上下两行数据的差值,就可以用这种位移函数;

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/46811.html

(0)
上一篇 2024年 9月 4日 下午11:26
下一篇 2024年 9月 4日

相关推荐

关注微信