相关疑难解决方法(0)

PostgreSQL:查找到目前为止连续几天的数量

给定一组带有时间戳字段的记录(代表我的应用程序中的签名),那么确定连续签入的当前条纹的好方法是什么?

换句话说,通过签入时间降序排序的签到,在用户错过一天之前有多少条记录?

目前我正在使用这种技术:

SELECT distinct(uca.created_at::date) as created_at
    FROM user_challenge_activities as uca INNER JOIN user_challenges as uc
    ON user_challenge_id = uc.ID WHERE uc.user_id = #{user.id}
    order by (uca.created_at::date) DESC;
Run Code Online (Sandbox Code Playgroud)

...我将签到时间戳转换为日期(最终以2012-03-20结束),然后在代码中,浏览记录并递增计数器,直到记录与下一记录之间的日期大于1天.

然而,这种方法对我来说似乎很笨拙,而且看起来像Postgres会擅长的那种东西.

那么实际上有更好的方法来实现这一目标吗?

sql postgresql date

5
推荐指数
1
解决办法
1734
查看次数

按相同的值排序分区

我正在使用GreenPlum引擎,我正在使用pgAdmin来查询数据,我只有读取权限所以我无法创建函数或程序,甚至我不知道为什么我无法使用变量.

这是我的数据和期望的结果:

Pais    Campaña     Representante   Actividad   Racha   **Desired value**
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 …

sql postgresql window-functions greenplum pgadmin

1
推荐指数
1
解决办法
2692
查看次数

标签 统计

postgresql ×2

sql ×2

date ×1

greenplum ×1

pgadmin ×1

window-functions ×1