关于如何在 t-SQL(SQL Server 2017 社区版或更高版本)中为有序观察(行)编写计数(唯一和总)的运行比率的任何想法?
给定一个必须排序的数据集(例如按日期索引/排序的时间序列):
CREATE TABLE #x (dt DATE, Name VARCHAR(MAX));
INSERT INTO #x VALUES
('2012-01-01', 'a'),('2012-01-02', 'b'),('2012-01-03', 'c'),
('2012-01-04', 'a'),('2012-01-05', 'b'),('2012-01-06', 'd'),
('2012-01-07', 'a'),('2012-01-08', 'b'),('2012-01-09', 'e'),('2012-01-10', 'e');
因此,给定列Dt
和Names
,我需要Ratio
下面的输出。为清楚起见,我还包含了输出列UCnt
,这些列计算迄今为止的唯一名称(即受限制的运行计数)和TCnt
统计所有名称的最新数据(即简单运行计数)。输出Ratio
字段只是两者的一个运行比例。
Dt Name UCnt TCnt Ratio
2012-01-01 a 1 1 1.000
2012-01-02 b 2 2 1.000
2012-01-03 c 3 3 1.000
2012-01-04 a 3 4 0.750
2012-01-05 b 3 5 0.600
2012-01-06 d 4 6 0.666
2012-01-07 a 4 7 0.571
2012-01-08 b 4 8 0.500
2012-01-09 e 5 9 0.555
2012-01-10 e 5 10 0.500