在Sql server 2012里面,开窗函数丰富了许多,其中带出了2个新的函数 First_Value 和 Last Value .现在来介绍一下这2个函数的应用场景. 首先分析一下First_Value(),用法是根据Partition By对数据进行分区,如果忽略Partition By ,那么默认整块数据一个区域,然后根据Order By 进行排序,取出第一个值. ;WITH CTE AS( AS TotalAmount UNION ALL AS TotalAmount UNION AL
一个学习性任务:每个人有不同次数的成绩,统计出每个人的最高成绩. 这个问题应该还是相对简单,其实就用聚合函数就好了. select id,name,max(score) from Student group by id,name order by name 上边这种情况只适用id 和name是一一对应的,否则查询出来的数据是不正确的. 例如 : 1 张三 100 2 张三 90 查询出来的结果 两条信息都会输出. 避免这种情况,可以使用开窗函数. 个人理解就是,开窗函数和聚合函数功能是相反的.
WITH tagTab AS( SELECT YearMonth, pm=RANK() OVER(PARTITION BY YearMonth ORDER BY amount DESC) FROM SaleTab ) SELECT * FROM tagTab WHERE pm<=5 开窗函数: http://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx
在SQL Server中,利用SQL进行分页的方法也有很多,今天要总结的是SQL Server 2005中引入的OVER开窗口函数,然后利用开窗函数进行分页. 示例代码如下: -- 设置数据库上下文 USE TSQLFundamentals2008; GO -- 使用ROW_NUMBER分页,查找第1-10条数据 SELECT T.custid,T.companyname,T.address,T.city FROM ( SELECT ROW_NUMBER() OVER(ORDER BY cust
从 http://jimshu.blog.51cto.com/3171847/1376637/ 转 开窗函数是在 ISO 标准中定义的.SQL Server 提供排名开窗函数和聚合开窗函数. 在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成.SQL Server 2005 引入了开窗函数,使得这些经典的难题可以被轻松的解决. 窗口是用户指定的一组行.开窗函数计算从窗口派生的结果集中各行的值.开窗函数分别应用于每个分区,并为每个分区重新启动