位置: 编程技术 - 正文

SqlServer 2005 T-SQL Query 学习笔记(3)

编辑:rootadmin

AD HOC PAGING:

就是指用页面的序号和页面的大小请求一个单独的页面。下面是例子。

DECLARE @pagesize AS INT, @pagenum AS INT;SET @pagesize = 5;SET @pagenum = 2;WITH SalesCTE AS( SELECT ROW_NUMBER() OVER(ORDER BY qty, empid) AS rownum, empid, mgrid, qty FROM dbo.Sales)SELECT rownum, empid, mgrid, qtyFROM SalesCTEWHERE rownum > @pagesize * (@pagenum-1) AND rownum <= @pagesize * @pagenumORDER BY rownum; 说明:在上个例子中,其实SQL只审视了行(2*5),也就是说,查看N页的话,SQL只查到N的页的数据,N页后面的数据一概不查看。 另外,每当移动一页,都会把这页放进缓存里,因此每次查询,就是逻辑查询(缓存)+物理查询的过程。物理查询只需要查询新请求的页即可,其他全部在缓存里执行,这样大大加快了查询速度。

MULTIPAGE ACCESS:

如果结果集不是很大,而且分了多个请求页面,请求也不向前移动,那么这是一个好的方案:首先在一个表里使用ROW_NUMBER具体化所有的页,然后创建一个群集索引。下面是例子。

首先创建按ROW_NUMBER把列编好,

SELECT ROW_NUMBER() OVER(ORDER BY qty, empid) AS rownum, empid, mgrid, qty INTO #SalesRN FROM dbo.Sales;CREATE UNIQUE CLUSTERED INDEX idx_rn ON #SalesRN(rownum);

然后直接按ROWNUM查询,

DECLARE @pagesize AS INT, @pagenum AS INT; SET @pagesize = 5; SET @pagenum = 2; SELECT rownum, empid, mgrid, qty FROM #SalesRN WHERE rownum BETWEEN @pagesize * (@pagenum-1) + 1 AND @pagesize * @pagenum ORDER BY rownum;

RANK & DENSE RANK

这2个函数和ROW_NUMBER的区别是:ROW_NUMBER在ORDER BY的条件里有重复行存在的话,是把这些重复行也按INDEX排列的,但是RANK和DENSE RANK总是确定的,即只要是ORDER BY重复的行,他们是统一INDEX的。

RANK和DENSE_RANK的区别是,RANK是如果上级的INDEX和下级的INDEX有可能不是+1关系,是按下级真正处于列里的位置进行INDEX,而DENSE_RANK是按照跟上级的INDEX+1的关系进行的编码。

比如:

SELECT empid, qty, RANK() OVER(ORDER BY qty) AS rnk, DENSE_RANK() OVER(ORDER BY qty) AS drnk FROM dbo.Sales ORDER BY qty;

NTILE

NTILE的用法和其他的RANK函数一样,只不过它可以传入一个参数,用来决定最大的INDEX是多少:它会按行数进行除法,然后平均分配行数进行INDEX的标示。

比如,如果有列,那么首先/3=3,3列一组作为一个INDEX,然后,%3=2,这2列会分别加在前面的2组上。

比如,

SELECT empid, qty, CASE NTILE(3) OVER(ORDER BY qty, empid) WHEN 1 THEN 'low' WHEN 2 THEN 'medium' WHEN 3 THEN 'high' END AS lvlFROM dbo.SalesORDER BY qty, empid;

推荐整理分享SqlServer 2005 T-SQL Query 学习笔记(3),希望有所帮助,仅作参考,欢迎阅读内容。

SqlServer 2005 T-SQL Query 学习笔记(3)

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

SqlServer T-SQL Query 学习笔记(4) 比如,我要建立一个1,,行的数字表:CREATETABLEdbo.Nums(nINTNOTNULLPRIMARYKEY);DECLARE@maxASINT,@rcASINT;SET@max=;SET@rc=1;INSERTINTONumsVALUES(1);WHILE@rc*2=@maxBEGININSE

SQLserver 文件和文件组的作用说明 1、文件和文件组的含义与关系每个数据库有一个主数据文件.和若干个从文件。文件是数据库的物理体现。文件组可以包括分布在多个逻辑分区的文件,

sql 批量更新问题的解决方法 首先注意Statement和PreparedStatement的问题Statementsm=cn.createStatement();sm.addBatch(sql1);sm.addBatch(sql2);...sm.executeBatch()用Statement的好处就是每次可以直接传一个SQL语

标签: SqlServer 2005 T-SQL Query 学习笔记(3)

本文链接地址:https://www.jiuchutong.com/biancheng/319298.html 转载请保留说明!

上一篇:SqlServer 2005 T-SQL Query 学习笔记(2)

下一篇:SqlServer 2005 T-SQL Query 学习笔记(4)

  • 现代服务印花税属于哪项
  • 买房契税缴纳比例
  • 小规模企业税收优惠政策2023
  • 印花税计入什么科目会计分录
  • 可以直接申请一般纳税人吗
  • 季度结转会计分录
  • 微信转账报销怎么转换成文字
  • 退货手续费账务怎么处理
  • 期末小规模纳税人差额纳税的会计处理分析
  • 混搭销售的企业有哪些
  • 个人借款无法收回确认坏账账务处理
  • 预计退货会计英语
  • 水电费大于发票怎么处理?
  • 分公司是独立法人企业吗
  • 船舶维修价格表2017
  • 买新车抵旧车
  • 工程施工科目核算
  • 交社保公积金需要劳动合同吗
  • 固定资产质保金计入什么科目
  • 房屋租赁公司和公寓管理公司区别是什么
  • windows登录提示
  • 查看电脑开机时间记录win10
  • 外贸企业代理出口销售的出口退税手续
  • 长期待摊费用如何结转
  • NDSTray.exe - NDSTray是什么进程 有什么用
  • msmpeng.exe 是什么
  • thinkphp操作数据库
  • 未取得专用发票是否计算增值税
  • 原材料科目是什么意思
  • wordpress功能介绍
  • 物流公司交保险是骗局吗
  • php redis使用
  • 应交税金及附加包括哪些
  • thinkphp6验证
  • 新建利润表
  • 银行存款利息收税吗
  • 深入了解jvm
  • 织梦会员功能
  • 国网统一开发平台uap
  • 房产税一般在哪缴纳
  • 企业当年实现的利润属于哪类会计科目
  • 出租车定额发票代码含义
  • 实际已缴纳所得税额大于初始化金额
  • 营改增利息收入增值税
  • 自然人扣缴客户端恢复数据
  • 公司买的茶叶怎么入账
  • 一般纳税人注销公司麻烦吗
  • ukey要交服务费吗
  • 对外服务应收取的款项
  • 房屋免租期的房子能卖吗
  • 社保扣费不成功会再次扣费吗
  • 出租不动产如何缴纳增值税
  • 收付转三种凭证的限制类型
  • 公司被冻结
  • 免征企业所得税的有哪些行业
  • 利用rpm安装软件包时,应使用命令选项
  • freebsd常用命令
  • win7系统cpu占用率过高怎么办
  • xp的兼容模式
  • ubuntu创建新用户并增加管理员权限
  • ssd固态硬盘内部结构图
  • win8有几个版本
  • xp系统如何取消隐藏
  • windows下打开注册表的命令是什么
  • cocos 2d x
  • ant压缩包删除
  • linux shell echo
  • [置顶]bilinovel
  • sed基本用法
  • python爬虫类
  • jquery数据绑定
  • javascript简单吗
  • python爬虫有道翻译
  • 新疆油田在哪个地方
  • 国家税务总局2018年61号公告
  • 车船税的纳税期限是
  • 河南省医保网上报销流程
  • 企业承包经营责任制
  • 房屋契税可以退个人所得税吗
  • 企业所得税年报什么时候开始申报
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设