gpt4 book ai didi

sql - 根据列值对行进行排名/计数

转载 作者:行者123 更新时间:2023-12-04 18:29:03 30 4
gpt4 key购买 nike

我有一些数据采用此 sqlfilddle 中描述的格式:http://sqlfiddle.com/#!4/b9cdf/2

基本上,一个包含用户 ID 和事件发生时间的表。我想做的是根据用户发生事件的时间来计算事件。所以,一个看起来像这样的表:

UID    Timestamp
-----------------
01 01-APR-12
01 01-APR-12
02 02-APR-12
03 05-APR-12
01 10-APR-12
02 11-APR-12
03 15-APR-12
01 20-APR-12

我希望它根据事件发生的顺序为事件分配一个数字等级。所以,这意味着上面的表格将变成:

UID    Timestamp     Rank
--------------------------
01 01-APR-12 1
02 02-APR-12 1
03 05-APR-12 1
01 10-APR-12 2
02 11-APR-12 2
03 15-APR-12 2
01 20-APR-12 3

有没有办法在 Oracle SQL 中执行此操作?还是我必须将它输出到脚本语言并从那里获取?

谢谢!

最佳答案

看起来你想要分析函数 rank

SELECT uid, timestamp, rank() over (partition by uid order by timestamp) rnk
FROM your_table

如果可以有联系(两行具有相同的 UIDTimestamp),那么,根据您希望如何处理联系,您可能需要 dense_rankrow_number 解析函数代替。

关于sql - 根据列值对行进行排名/计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623263/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com