位置: 编程技术 - 正文

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)

  • 支付给境外个人的租金
  • 普通发票忘记开数量和单价可以用吗
  • 法人转钱入公户怎么做会计分录
  • 联营企业子公司抵消比例
  • 计提上一年度企业所得税会计分录
  • 支付费用可以通过应收账款
  • 企业的固定资产有何特征
  • 发票代码和发票号码是什么
  • 长期挂账的应付账款怎么处理
  • 接受控股股东的非现金资产捐赠
  • 商业地产会计核算流程
  • 年度亏损计提所得税吗
  • 地税有哪些税种类型
  • 零售业税率多少?如何交?
  • 企业会计制度怎么备案
  • 如何查看本月还款金额
  • 工会经费的优惠政策2020
  • 事业单位财政直接支付了费用忘记入帐
  • 广告公司车身广告
  • 公司向银行贷款利息是多少
  • 什么是要约的撤销
  • 一般纳税人如何计算企业所得税
  • 如何设置路由器步骤要详细
  • 知乎如何更改名字
  • PHP:stream_get_meta_data()的用法_Stream函数
  • 股权转让的不仅是权利还有义务
  • php的正则表达式
  • 企业亏损注销税务会不会来查账
  • 工业企业成本核算流程
  • 其他业务支出的二级科目有哪些
  • 阿尔卑斯旱獭冬眠
  • 以前年度损益调整账务处理分录
  • php读取二进制文件
  • vuex用法和原理
  • 自动驾驶 模块
  • 转让旧机器的会计分录
  • 研发 专利
  • 转出未交增值税怎么算
  • discuz论坛无法登录
  • 个税申请退税流程
  • 公司银行账号注销需要什么资料
  • mysql左连接查询 效率
  • mysql5.7.35安装配置教程
  • mysql需要转义的特殊字符
  • 门禁卡一般属于什么卡
  • 劳务费如何开票给客户
  • 发票使用范围指什么
  • 退回的以前年度的附加怎么申报
  • 接待客人后的感受和过程
  • 收到投资款证明怎么做账
  • 购买金税盘的费用会计分录
  • 委托加工科目有余额嘛
  • 主营业务成本可以设明细科目吗
  • 一般纳税人主表中的25是怎么来的
  • 去银行提备用金需要什么
  • 账务调整会计分录
  • 成本核算方法有哪几种
  • 企业清算的顺序
  • 采用账龄分析法计提坏账准备
  • sqlserver2000企业管理器自动关闭
  • u极速u盘启动官网
  • windows优化软件
  • mac快速关闭所有窗口
  • linux内核模块编译步骤
  • win7怎样关闭u盘保护功能
  • ubuntu系统中文件夹不能改名
  • 电脑超频以后变得很卡
  • win8 chkdsk
  • explore是什么文件
  • pcards
  • 升级linux版本
  • js仿QQ中对联系人向左滑动、滑出删除按钮的操作
  • python生成随机
  • js注释方法
  • 欢迎使用城市供水信息服务平台
  • 安卓自定义app
  • javascript的基础类型有哪些
  • 印花税在哪里查询
  • 租赁设备能抵扣个税吗
  • 电子保险怎么查询车船税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设