首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL - OLAP函数

SQL - OLAP函数
EN

Stack Overflow用户
提问于 2017-03-20 09:51:41
回答 1查看 540关注 0票数 1

我需要在数据中找到“事务”,并为每个事务生成序列号。

每个事务都定义为check_in =0,表示结帐;check_in =1,表示作为一个事务签入-中间可以有"n“个事务,有些事务的check_in可以为null或check_in =0

对于同一事务,一个事务块的序号应该相同。我有Customer_ID,Check_in和Date的数据。需要生成序号

代码语言:javascript
复制
Sequence No Customer_ID Check_in    Date
1               3252538     0       11/14/15 03:20 AM
1               3252538     0       11/14/15 07:37 PM
1               3252538     1       11/15/15 07:27 PM
2               3252538     0       11/17/15 12:34 AM
2               3252538     1       01/27/16 07:46 AM
3               3252538     0       02/01/16 09:09 PM
3               3252538     NULL    02/05/16 08:56 PM
3               3252538     1       02/05/16 11:24 PM
4               3252538     0       02/08/16 07:19 PM
4               3252538     0       02/13/16 02:16 AM
4               3252538     1       02/13/16 10:49 PM
5               3252538     0       02/16/16 06:07 PM
5               3252538     1       02/19/16 03:01 AM

在sql中如何做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2017-03-20 09:55:09

有意思的。"1“结束事务。它前面的所有零都定义了事务。您可以通过对1进行逆和来识别组:

代码语言:javascript
复制
select t.*,
       sum(check_in) over (partition by customer_id order by date desc) as grp
from transactions t;

不幸的是,这把事情放在了相反的顺序。所以:

代码语言:javascript
复制
select t.*, dense_rank() over (order by grp) as sequence
from (select t.*,
             sum(check_in) over (partition by customer_id order by date desc) as grp
      from transactions t
     ) t;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42894667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档