因此,我试图通过唯一标识符来获得一段时间内的使用情况连续计数,
E.G。
Date UniqueID Running Count
1/1/2019 234567 1
1/1/2019 123456 1
1/2/2019 234567 2
1/3/2019 234567 3
1/3/2019 123456 2
基本上我希望能够看到在2019年1/3/3这是UniqueID 234567第三次出现在数据中。
我尝试过:
SELECT Date, UniqueID,
count(UniqueID) OVER (ORDER BY Date, UniqueID rows unbounded preceding) AS RunningTotal
但这只是整体运行情况,因此不会使用新的UniqueID重置
SELECT Date, UniqueID, count(UniqueID) OVER (ORDER BY Date, UniqueID rows unbounded preceding) AS RunningTotal
有什么我可以做的以重置为每个唯一ID
答案 0 :(得分:1)
假设最后一行的2
是一个错字,则您需要ROW_NUMBER()
或DENSE_RANK()
:
SELECT Date, UniqueID,
ROW_NUMBER(UniqueID) OVER (PARTITION BY UniqueID ORDER BY Date) AS RunningTotal
如果您一天只想计算一次,则可以使用DENSE_RANK()
。
顺便说一句,您可以也可以使用COUNT(*)
来表达这一点:
SELECT Date, UniqueID,
COUNT(*) OVER (PARTITION BY UniqueID ORDER BY Date) AS RunningTotal
在处理重复值方面有一些细微的差异。通常,COUNT()
不会用于此目的,因为排名功能是如此普遍(且非常有用)。