我有一个数据集,它将使用以下规则分为三部分:
- 按Open_Rate列排名第一(应返回最高Open_Rate(
- 在开放利率相等的情况下,按上次开放利率排序
- 在没有最后开放率的情况下,使用注册来确定排名
以下是排名应该如何显示的示例:
Bob 100%打开
账单50%打开,最后一次打开7/31
Connie 50%打开,最后一次打开6/29
Dan 0%开放,已注册8/1
Eddie 0%开放,已注册7/15
然后,数据集应该分成三分之一——上三分之一、中三分之一和下三分之一。
我的问题是把数据集分成三份。我有这个查询来选择前33%并填充一个新表,但我不确定如何选择";中间的";按照相同的标准为33%;下部";34%。
select top 33 percent
*
from Sends_And_Opens_BySubscriber
order by
Open_Percentage desc, Last_Open_Date desc, SignUp_Date desc
您可以为;第三个";使用ntile()
:
select sos.*,
ntile(3) over (order by Open_Percentage desc, Last_Open_Date desc, SignUp_Date desc) as grouping
from Sends_And_Opens_BySubscriber sos;