SQL中的秩函数
我的任务是计算成员访问了多少次 当前访问日期的图书馆。我有以下几点 一个成员的示例记录。例如,2000年1月10日 (访问id=55353)这位成员第一次访问了图书馆, 因此,在2000年1月10日之前,他有0次访问。然后在2000年12月15日(访问id=12355) 该成员再次访问了图书馆,现在他在2012年12月15日之前有1次访问。 该成员于2002年1月1日再次访问了图书馆(访问id=52524),并 现在,他在2002年1月1日之前有两次访问。现在,在最近一次访问之前,继续访问 访问12/12/2009(访问id=45254)该成员有9次访问图书馆SQL中的秩函数,sql,Sql,我的任务是计算成员访问了多少次 当前访问日期的图书馆。我有以下几点 一个成员的示例记录。例如,2000年1月10日 (访问id=55353)这位成员第一次访问了图书馆, 因此,在2000年1月10日之前,他有0次访问。然后在2000年12月15日(访问id=12355) 该成员再次访问了图书馆,现在他在2012年12月15日之前有1次访问。 该成员于2002年1月1日再次访问了图书馆(访问id=52524),并 现在,他在2002年1月1日之前有两次访问。现在,在最近一次访问之前,继续访问 访问
Member_ID Date_Visit Visit_id
12345 2000-10-01 55353
12345 2000-12-15 12355
12345 2002-01-01 52524
12345 2002-01-02 62558
12345 2003-05-30 22287
12345 2003-08-12 82552
12345 2003-09-12 12563
12345 2005-11-25 78785
12345 2008-12-25 98212
12345 2009-12-12 45254
我有一个脚本下面使用排名函数,但我被困在第一
访问和最后一次访问。请注意,这只是一个成员
示范。实际数据包括许多成员
SELECT
DATE_VISIT,
RANK() OVER (PARTITION BY MEMBER_ID ORDER BY DATE_VISIT) AS Rank
FROM RANKS
DATE_VISIT Rank
2000-10-01 1
2000-12-15 2
2002-01-01 3
2002-01-02 4
2003-05-30 5
2003-08-12 6
2003-09-12 7
2005-11-25 8
2008-12-25 9
2009-12-12 10
我希望我的输出如下:
DATE_VISIT Rank
2000-10-01 0
2000-12-15 1
2002-01-01 2
2002-01-02 3
2003-05-30 4
2003-08-12 5
2003-09-12 6
2005-11-25 7
2008-12-25 8
2009-12-12 9
谁能帮我看看吗?是否有其他功能、案例陈述或
修改秩函数使其工作?您可以尝试以下操作,也可以为秩列使用不同的别名
Select
Date_Visit,
Rank - 1
From (
Select
Date_Visit,
Rank() Over (Partition By Member_Id Order By Date_Visit) AS Rank
From
Ranks
) x
SELECT DATE_VISIT, (Rnk - 1) NewRnk FROM (
SELECT
DATE_VISIT,
RANK() OVER (PARTITION BY MEMBER_ID ORDER BY DATE_VISIT) AS Rnk
FROM RANKS
)
您可以尝试以下操作,也可以为列组使用不同的别名
SELECT DATE_VISIT, (Rnk - 1) NewRnk FROM (
SELECT
DATE_VISIT,
RANK() OVER (PARTITION BY MEMBER_ID ORDER BY DATE_VISIT) AS Rnk
FROM RANKS
)
你试过只减去1吗
SELECT
DATE_VISIT,
RANK() OVER (PARTITION BY MEMBER_ID ORDER BY DATE_VISIT) -1 AS Rank
FROM RANKS
你试过只减去1吗
SELECT
DATE_VISIT,
RANK() OVER (PARTITION BY MEMBER_ID ORDER BY DATE_VISIT) -1 AS Rank
FROM RANKS
. . 你一定很累了。从计算中减去“1”通常不被认为是一个困难的问题。你得到了最难的部分,那就是理解
rank
函数。谢谢。我不打算从计算中减去1。只是给我带来问题的语法。谢谢你一定很累了。从计算中减去“1”通常不被认为是一个困难的问题。你得到了最难的部分,那就是理解rank
函数。谢谢。我不打算从计算中减去1。只是给我带来问题的语法。谢谢