我有类似的东西,我需要得到“三角形”数-通过从0到n的所有自然数求和而创建。我有这样的代码,我应该写什么才能SUM(generate_series from generate_series(1,n))?
SELECT n,
CASE
WHEN n > 0 THEN
SUM value FROM generate_series(1,n)
ELSE 0
END
AS res
FROM triangular
字符串
结果应该是这样的:(n-1,res-1/ n-2,res-3/ n-3,res-6)或者换句话说:for(res=0;n>0;n--){res=res+n;}我尝试生成_serise并对其求和。
我试图找到“adcvate”PostgreSQL文档wikilike看到返回表“属性”的generate_sequence“类”
现在,我得到了这个:
SELECT n,
SUM(generate_s::INTEGER)
AS res
FROM triangular,
LATERAL generate_series(0,CASE WHEN n<=0 THEN 0 ELSE triangular.n END)
AS generate_ser(generate_s)
GROUP BY n
型
我如何替换GROUP BY,这样它就不会以任何方式分组它,只有n值进入处理代码的方式?
2条答案
按热度按时间olhwl3o21#
您是否在搜索累积的
SUM()
window function?demo:db<>fiddle的
字符串
还是一个简单的集合?
demo:db<>fiddle的
型
v8wbuo2f2#
如果你不提供别名,名字就只是“generate_series”。我不知道在哪里有文档记录,但是通过使用
*
并查看标题,它是可以被替换的:字符串
或者,如果您指定了列别名,则该别名就是名称:
型
如果提供了表别名而没有提供列别名,则列名是表名的副本。
型