Sql server 计算小数点以上的频率

Sql server 计算小数点以上的频率,sql-server,tsql,frequency,quantile,Sql Server,Tsql,Frequency,Quantile,假设我有详细介绍马拉松比赛的SQL Server表,所有这些都是一样的。每一行都是参与者,其中一列是完成时间[dbo].[marathon_X].[finish]。为了简单起见,我们假设[finish]以分钟(int)为单位计算 我陷入了困境,需要帮助我找出一个查询,将某场比赛的完成时间划分为十位数,并统计每十位数内完成比赛的参与者人数。这样我就可以了解不同时间段上的频率分布(在本例中,我希望这不是偶数,也不是正常的) 因此,例如,如果某场比赛的获胜者在130分钟后完成比赛,而最后一名参赛者在5

假设我有详细介绍马拉松比赛的SQL Server表,所有这些都是一样的。每一行都是参与者,其中一列是完成时间[dbo].[marathon_X].[finish]。为了简单起见,我们假设[finish]以分钟(int)为单位计算

我陷入了困境,需要帮助我找出一个查询,将某场比赛的完成时间划分为十位数,并统计每十位数内完成比赛的参与者人数。这样我就可以了解不同时间段上的频率分布(在本例中,我希望这不是偶数,也不是正常的)

因此,例如,如果某场比赛的获胜者在130分钟后完成比赛,而最后一名参赛者在520分钟后完成比赛,那么在该场比赛中,每个完成时间的十分位数将是(MAX(finish)-min(finish))/10=39分钟宽。然后,第一个十分位数是130-168分钟内的完成时间,第二个十分位数是169-207分钟,等等。然后我需要计算每个十分位数中的跑步者数量,其范围因比赛而异


可能非常简单,但我还没有弄清楚如何使用这个(或等效项)。

不确定您是否希望汇总最终结果,但这在最终选择中是一件小事

cte将创建所需的范围。然后连接两组数据就成了一件小事

示例

Declare @YourTable table (Participant int, FinishTime int)
Insert Into @YourTable values
 (1,130)  -- Top 
,(2,510)  -- Last
,(3,150)  -- Random ...
,(4,255)
,(5,460)
,(6,325)

;with cte as (
      Select Decile
            ,R1  = (MinV) + ( RngV * (Decile-1)) + (Decile-1)
            ,R2  = (MinV) + ( RngV * (Decile-1)) + (Decile-1) + RngV
       From  (values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10) ) A(Decile)
       Cross Join ( Select MinV = min(FinishTime)
                          ,MaxV = max(FinishTime)
                          ,RngV = (max(FinishTime)-min(FinishTime))/10  
                     From  @YourTable ) B
)
Select A.*
      ,B.Decile
 From  @YourTable A
 Join  cte B on FinishTime between R1 and R2
 Order By FinishTime
结果

Participant FinishTime  Decile
1           130         1
3           150         1
4           255         4
6           325         6
5           460         9
2           510         10

NTIL将输出值分成大小大致相等的组。对于一个数据集,它不会在一个域中将时间范围划分为10个等长值。所以,正如您所描述的,我们欢迎您使用标量逻辑和聚合+OVER()子句为min+max执行该逻辑,但SQL Server中没有简单的函数可以执行此操作。有趣的问题,做得好。哇。。。那很优雅。我只需要得到输出中指定的实际范围/十分位数,我可以解决这个问题。下一步我可以利用它来进行一些类似的查询,接下来我需要编写这些查询。无论如何,在我的样本中(当然不是马拉松比赛),分布结果出人意料地奇怪。超高屈膝。值得深思的地方。@灰狗在最终选择中只包括R1和R2