问题描述
例如,我在下面有这样的查询:
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