SQL - 如何返回每个五分位数的最小值和最大值

时间:2016-01-24 16:57:25

标签: sql sql-server-2008

在我的查询中,我选择了当前的贷款余额。我还创建了一个列,它返回每个贷款余额所属的五分之一。

我用过这句话

NTILE(5) OVER (ORDER BY CurrLoanBal)

从这里开始,如何返回每个五分位数的最小值和最大值?我不想将任何行分组,我希望每一行显示该特定五分位数的最小值和最大值。

1 个答案:

答案 0 :(得分:0)

您需要使用聚合函数和分区

select s.col1, s.col2, ... s.colN, 
max(s.col1) over (partition by s.col2, ... ),
min(s.col1) over (partition by s.col2, ... )
from stuff as s;

其中您的partition by子句决定如何对数据进行分区(“分组”),而不对分组进行分组。这样,窗口函数将应用于每个分区,以便为您提供所需的数据。

逐位分区中的列确定行的分区方式(在您的情况下,将一个五分之一与五分之一分开)。

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms189461.aspx