如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章
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