SQL [Oracle]:计算具有相同客户端ID的先前记录的数量

RDG

在线进行了简短搜索,以查看是否已经找到答案。找不到能够解决这种特殊情况的任何东西(这令人惊讶,因为我以为这很普遍)。

基本上,我有一个表,记录一个服务的注册,客户端注册的ID以及注册的开始和结束日期。请参阅下面的表结构示例:

Reg ID | Client ID | Reg Start  | Reg End

R6       C1          01-06-2016   Null
R5       C2          20-05-2016   02-06-2016
R4       C2          14-03-2016   11-05-2016
R3       C1          10-03-2016   05-05-2016
R2       C2          28-01-2016   02-02-2016
R1       C2          10-11-2015   23-12-2015   

我想要做的是从表中提取记录,但还要添加一列,该列返回表中每个记录具有相同客户端ID的以前注册的数量。为了清楚起见,我只想为具有相同客户端ID且开始日期小于该记录的每个记录的注册计数。

这样,成功的查询将返回以下输出:

Reg ID | Client ID | Reg Start  | Reg End    | # previous reg

R6       C1          01-06-2016   Null         1
R5       C2          20-05-2016   02-06-2016   3
R4       C2          14-03-2016   11-05-2016   2
R3       C1          10-03-2016   05-05-2016   0
R2       C2          28-01-2016   02-02-2016   1
R1       C2          10-11-2015   23-12-2015   0

有没有以前做过此事的人可以提供可行的解决方案?

我最初的想法是创建一个子查询,该子查询将对按客户ID分组的注册进行计数,然后使用客户ID将其加入我的主查询中。例如:

SELECT
t1.reg_id
t1.client_id
t1.reg_start
t1.reg_end
FROM registrations t1
JOIN
  (SELECT
   client_id
   count(reg_id)
   FROM registrations
   GROUP BY client_id) t2
ON t1.client_id = t2.client_id

但是,这将返回每条记录给定客户注册计数,因为我特别要求以前的注册。

蜂巢的思想可以提供的任何输入将不胜感激。我认为我目前对SQL的了解非常有限,这让我有些不满:/

另外,我可能还应该提到我正在使用Oracle数据库!

戈登·利诺夫(Gordon Linoff)

您可以使用以下方法执行此操作row_number()

select r.*,
       (row_number() over (partition by client_id order by reg_start) - 1) as cnt
from registrations r;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL [Oracle]:计算具有相同客户端ID的先前记录的数量

来自分类Dev

Oracle SQL Developer客户端编码

来自分类Dev

MS SQL如何选择最后N条记录相同的客户端

来自分类Dev

在Oracle SQL中根据重叠的日期范围连接客户端记录

来自分类Dev

如何获得一个插入的记录的ID在vertx使用Postgres的SQL客户端

来自分类Dev

脚本对于具有帐户数SQL的每个客户端

来自分类Dev

具有不同记录的 SQL delta 计算

来自分类Dev

升级带来的影响SQL Server 2005 SP3本机客户端是否具有已连接的客户端?

来自分类Dev

Oracle SQL-具有最大和最小数量的最新记录列表

来自分类Dev

SQL获取为空的记录的ID,并且没有其他记录具有相同ID的值吗?

来自分类Dev

在未安装SQL的客户端计算机上使用SQL库

来自分类Dev

在未安装SQL的客户端计算机上使用SQL库

来自分类Dev

sql查询以选择两列中具有相同id但不同值的记录

来自分类Dev

sql查询以选择两列中具有相同id但不同值的记录

来自分类Dev

SQL Server:多条记录合并到具有相同ID的同一行

来自分类Dev

SQL 通过浏览器获取唯一客户端的数量

来自分类Dev

SQL显示与客户端ID匹配的所有结果,但仅显示每个实例的最新版本

来自分类Dev

SQL计算具有相同sub_id的两个值的百分比。

来自分类Dev

SQL 计算列中具有相同值的行并按 id 分组?

来自分类Dev

SQL查询,没有客户端联系人且没有活动客户端联系人的客户端

来自分类Dev

Netezza SQL查找客户端IP

来自分类Dev

SQL查找全新的客户端

来自分类Dev

Flask在客户端使用SQL查询

来自分类Dev

Oracle SQL-如何获取具有最大日期的记录的分配ID

来自分类Dev

在 Oracle SQL 中合并具有相同 ID 但不同列值的行

来自分类Dev

SQL如何计算每个客户的会议数量?

来自分类Dev

如何设置SQL Server LocalDB在客户端计算机上运行?

来自分类Dev

客户端计算机中的 Sql Server 连接字符串

来自分类Dev

在SQL查询中进行计算以选择具有评级的记录

Related 相关文章

  1. 1

    SQL [Oracle]:计算具有相同客户端ID的先前记录的数量

  2. 2

    Oracle SQL Developer客户端编码

  3. 3

    MS SQL如何选择最后N条记录相同的客户端

  4. 4

    在Oracle SQL中根据重叠的日期范围连接客户端记录

  5. 5

    如何获得一个插入的记录的ID在vertx使用Postgres的SQL客户端

  6. 6

    脚本对于具有帐户数SQL的每个客户端

  7. 7

    具有不同记录的 SQL delta 计算

  8. 8

    升级带来的影响SQL Server 2005 SP3本机客户端是否具有已连接的客户端?

  9. 9

    Oracle SQL-具有最大和最小数量的最新记录列表

  10. 10

    SQL获取为空的记录的ID,并且没有其他记录具有相同ID的值吗?

  11. 11

    在未安装SQL的客户端计算机上使用SQL库

  12. 12

    在未安装SQL的客户端计算机上使用SQL库

  13. 13

    sql查询以选择两列中具有相同id但不同值的记录

  14. 14

    sql查询以选择两列中具有相同id但不同值的记录

  15. 15

    SQL Server:多条记录合并到具有相同ID的同一行

  16. 16

    SQL 通过浏览器获取唯一客户端的数量

  17. 17

    SQL显示与客户端ID匹配的所有结果,但仅显示每个实例的最新版本

  18. 18

    SQL计算具有相同sub_id的两个值的百分比。

  19. 19

    SQL 计算列中具有相同值的行并按 id 分组?

  20. 20

    SQL查询,没有客户端联系人且没有活动客户端联系人的客户端

  21. 21

    Netezza SQL查找客户端IP

  22. 22

    SQL查找全新的客户端

  23. 23

    Flask在客户端使用SQL查询

  24. 24

    Oracle SQL-如何获取具有最大日期的记录的分配ID

  25. 25

    在 Oracle SQL 中合并具有相同 ID 但不同列值的行

  26. 26

    SQL如何计算每个客户的会议数量?

  27. 27

    如何设置SQL Server LocalDB在客户端计算机上运行?

  28. 28

    客户端计算机中的 Sql Server 连接字符串

  29. 29

    在SQL查询中进行计算以选择具有评级的记录

热门标签

归档