如何在 over 函数中使用 partition by 和 order by?

Posted

技术标签:

【中文标题】如何在 over 函数中使用 partition by 和 order by?【英文标题】:How to use partition by and order by in over function? 【发布时间】:2012-09-22 06:29:46 【问题描述】:

我使用的是 SQL Server 2008 R2。

我正在尝试编写一个显示以下内容的查询:

select productname, unitprice,categoryid, sum(unitprice) 
over (partition by categoryid order by unitprice desc) As PriceSum
from Products

我希望结果是按单价订购产品,同时按类别划分产品。我收到此错误:Incorrect syntax near 'order'. 我做错了什么?

【问题讨论】:

【参考方案1】:

你没有做错什么。 SQL Server 2008 不支持使用窗口函数运行聚合。

SQL Server 2012 终于全面支持窗口函数,包括运行聚合。所以如果你真的需要这个,你需要升级。

请参阅此 SQLFiddle for SQL Server 2012:http://sqlfiddle.com/#!6/5303f/1

【讨论】:

以上是关于如何在 over 函数中使用 partition by 和 order by?的主要内容,如果未能解决你的问题,请参考以下文章

over(partition by)开窗函数的使用

clickhouse实践clickhouse中如何实现ROW_NUMBER() OVER(PARTITION BY ‘xxx‘ ORDER BY ‘xxx‘ DESC/ASC)

clickhouse实践clickhouse中如何实现ROW_NUMBER() OVER(PARTITION BY ‘xxx‘ ORDER BY ‘xxx‘ DESC/ASC)

ROW_NUMBER() OVER()函数用法;(分组,排序),partition by

ROW_NUMBER() OVER()函数用法;(分组,排序),partition by

OVER(PARTITION BY) 函数