zoukankan      html  css  js  c++  java
  • 关于Sqlserver窗口函数over的用法

    个人觉得,sqlserver在2005以后推出窗口函数 Over完全是一个创举,他让很多的复杂的问题变得简单了。

    既然是用法,我就不说明其他的东西,举一些例子就好了:

    create table OverTableTest
    (
    	id int identity(1,1),--ID
    	Val int, --值
    	typ int, --类型
    )
    go
    declare @cou int
    set @cou=1
    while @cou<50
    begin
    	insert into OverTableTest 
    		select @cou,@cou%5+1 
    	
    	set @cou=@cou+1
    end
    go
    
    select * from OverTableTest
    /*
    	通常我们会用到的是情景是:分页(row_Number)
    	示例:
    */
    ;with mycte as
    (
    	select row=ROW_NUMBER() over (order by id desc) ,* from
    	OverTableTest
    )select * from mycte where row BETWEEN 10 and 20
    /*
    	在上面的情况下我经常用到,
    	但是却一直没有追问 Over到底是做什么用的啊
    */
    /*
    	应用环境2 分组获取前几名
    	就好像,考试了,要获取每科排名前3的同学
    	SQL:
    */
    ;with mycte as
    (
    	select row=ROW_NUMBER() over (partition by typ order by val desc) ,* from
    	OverTableTest
    )select * from mycte where row<=3
    /*
    	在这个示例中 加上了partition by 就是进行分组统计了
    	我们再来进行第三个示例:
    	按照类别获取 类别数量,同时按照类别数量最多的排序
    */
    select Cunt=count(0) over(partition by typ) ,* from
    	OverTableTest  order by Cunt desc,typ,id 
    -----------------------------------------------------------------
    /*
    	今天例子就说到这里了,运行结果 大家复制直接执行就好了
    */


  • 相关阅读:
    Responder一点也不神秘————iOS用户响应者链完全剖析
    loadView、viewDidLoad及viewDidUnload的关系
    iOS 离屏渲染的研究
    CoreData处理海量数据
    《驾驭Core Data》
    为什么都要在主线程中更新UI
    快速排序OC实现和快排思想找第n大的数(原创)
    最新版SDWebImage的使用
    UIViewContentMode各类型效果
    iOS 8 自适应 Cell
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146474.html
Copyright © 2011-2022 走看看