如何解决是否可以通过T-SQL中另一个窗口函数的结果对数据集进行排名?
是否可以通过另一个窗口函数的结果对数据集进行排名?
例如,我在下面有这样的查询:
select distinct
country,cast(sum(Sessions) over (partition by country) as float) / cast(sum(sessions) over() as float) as sess_prcnt
from
GoogleAnalytics.dbo.SiteVisitsLog
order by
sess_prcnt desc
我想要做的是按sess_prcnt
列对国家/地区进行排名。
添加rank() over(order by sess_prcnt)
之类的行或使用CTE都会出错。
提前谢谢!
解决方法
您说使用CTE会产生错误-它们会导致哪种错误?例如,做类似
的任何问题; WITH A AS
(select distinct
country,cast(sum(Sessions) over (partition by country) as float) / cast(sum(sessions) over() as float) as sess_prcnt
from
GoogleAnalytics.dbo.SiteVisitsLog
)
SELECT *,rank() OVER (order by sess_prct DESC) AS rnk
FROM A
order by
sess_prcnt desc
或类似的将其用作FROM子句的一部分
SELECT *,rank() OVER (order by sess_prct DESC) AS rnk
FROM
(select distinct
country,cast(sum(Sessions) over (partition by country) as float) / cast(sum(sessions) over() as float) as sess_prcnt
from
GoogleAnalytics.dbo.SiteVisitsLog
) A
order by
sess_prcnt desc
您可能还想确保对任务使用适当的排名功能-ROW_NUMBER,RANK,or DENSE_RANK
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。