尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili
这一章节我们将了解postgresql 中聚合函数后面的over()子句,可能大家在工作的时候或多或少也涉及过over()子句的使用。 我们如果要实现一张这样的报表,这张报表有四列,国家名字,年份,年份GDP,1960-2018年该国家的GDP均值,第四列的结果的目的就是要拿对应年份的GDP和总的均值的GDP做比较,那么我可能会写出来这样的SQL: select ff.country_name,"year",gdp,cc.averg from country_gdp_year_final ff left join( select country_name,avg(gdp) as averg from country_gdp_year_final where country_code='CHN' group by country_name ) cc on cc.country_name=ff.country_name where ff.country_code='CHN'
不用窗口函数的均值列的获取 可以看到如果我们要在报表中多出一样这样的均值列的话,原生的SQL就只能以这种相似的方式来获取,然后做join,幸运的是PG为我们提供了这种原生的函数获取这种结果集,talk is cheap,show you the code! select country_name,"year",gdp,avg(gdp) over() from country_gdp_year_final f

本文介绍了在PostgreSQL中如何使用窗口函数over()来计算聚合值,特别是在创建报表时,例如计算国家年份GDP的平均值。通过实例展示了over()、partition by和order by子句的应用,解释了如何根据需求调整窗口以获取正确的平均值序列。
最低0.47元/天 解锁文章
2022

被折叠的 条评论
为什么被折叠?



