T-SQL:开窗函数的常见应用

为每条数据显示聚合信息(聚合函数()over())

查询每个工资小于5000元的员工信息(城市以及年龄),并且在每行中都显示所有工资小于5000元的员工个数

select City,Age,count(*)over()
from Person
where Salary<5000;
CityAge
Beijing205
Londonu215
London235
Beijing225
NewYork245

为每条数据提供分组的聚合函数结果(聚合函数()over(partion by 字段)as 别名)

查询每一个人员的信息以及所属城市的人员数

select Name,City,Age,Salary,count(*)over(parttion byCity)
from Person;
NameCityAge
TomBeijing204
JimBeijing214
MerryBeijing234
BillBeijing224
SwingNewYork243
GuoNewYork243
JohnNewYork203
JerryLondon242
DannyLondon252

与排名函数一起使用(row number()over(order by 字段)as 别名)

row number()函数用于计算一行在结果集中的行号。
在分页查询中,若根据id来限制每页的行数,每页数据经过一系列修改后,id可能不再连续,若再根据id来限制每页行数,显示的结果可能就会和实际预想的不同。
则可添加一列,来代表行数,他是连续的。

select
    num
    , stuId
    , stuName
    , stuSex
    , stuBirthdate
    , stuStudydate
    , stuAddress
    , stuEmail
    , stuPhone
    , stuIsDel
    , stuInputtime
    , classId
from (
    select 
        row_number() over(order by stuid) as num
        , stuId
        , stuName
        , stuSex
        , stuBirthdate
        , stuStudydate
        , stuAddress
        , stuEmail
        , stuPhone
        , stuIsDel
        , stuInputtime
        , classId
    from 
        TestDataBase..Student
    where 
        stuIsDel = 0) as t
where 
    t.num between (10-1)*9+1 and 9*10;

每页m条,第n页
每一页的第一条就是上一页加一条,m*(n-1)+1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值