【发布时间】:2016-02-10 17:26:54
【问题描述】:
我正在使用 GreenPlum 引擎,我正在使用 pgAdmin 来查询数据,我只有读取权限,所以我无法创建函数或过程,即使我不知道为什么我不能使用变量.
这是我的数据和想要的结果:
Pais Campaña Representante Actividad Racha **期望值** 96 20150302 758593197 1 1 1 96 20150303 758593197 1 2 2 96 20150304 758593197 1 3 3 96 20150305 758593197 0 1 1 96 20150306 758593197 1 4 1 96 20150307 758593197 0 2 1 96 20150308 758593197 0 3 2 96 20150309 758593197 1 5 1 96 20150310 758593197 0 4 1 96 20150311 758593197 0 5 2 96 20150312 758593197 0 6 3 96 20150313 758593197 0 7 4 96 20150314 758593197 1 6 1这是我的尝试之一:
Select
Pais,Campaña,Representante,Actividad,
rank() over(partition by Pais,Representante,Actividad
order by Pais,Campaña,Representante) as Racha
From TEMP20151109
Order By Campaña;
所需的值是Actividad值的连续性计数,当Actividad为0时我需要重置计数。
【问题讨论】:
-
如果您尝试查询的字段名称与您的示例数据匹配,这将有所帮助。现在,很难理解它。
-
您想要的结果表明您希望在
Actividad中的每个更改 中重置计数,而不是when 'Actividad' is 0。对吗? -
@VladimirBaranov:建议的副本用于 SQL Server,并且有更有效的解决方案。
-
@ErwinBrandstetter,Postgres 也有
LAG和SUM() OVER(),不是吗?因此,该 SQL Server 解决方案可以在 Postgres 中运行。至于什么效率更高,很难猜测,应该在真实数据和真实硬件上进行测试。我的直觉是它们会非常相似。我的观点是,这是一个很常见的问题。
标签: sql postgresql pgadmin window-functions greenplum