sql - 是否可以通过 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 或 DENSE_RANK
推荐阅读
- html - 元素外的边框效果
- leaflet - 使用变量调用标记和更新选项不起作用
- python - Django:不能减去偏移天真和偏移感知日期时间
- pandas-melt - 如何将数据从多列转换为多行并在Python中按标识符变量分组
- python - Python:在克隆列表中使用 lower() 会导致无限循环?
- excel - Python win32com Excel CreatePivotChart - 如何指定表格
- python - 使用 Matplotlib 绘制 3D 散点图时如何更改图例文本?
- asp.net-core - swagger/swashbuckle 是否支持 multipart/mixed 和 multipart/related?
- dmn - 感觉语言内置字符串函数“替换”是否会影响搜索模式的第一个匹配或所有出现?
- azure-devops - 将 Azure DevOps SDK 用于 Git 功能的解决方案