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

时间:2024-01-20 20:21:51 

SQL2005增加了4个关于队计算的函数:分别是ROW_NUMBER,RANK,DENSE_RANK,NTILE.

 

注意:这些函数只能出现在SELECT和ORDER BY的查询中。语法如下:

ranking_function over([partition by col_list] order by col_list)

 

ROW_NUMBER:在排序的基础上对所有列进行连续的数字进行标识。

执行顺序:为了计算列值,优化器首先需要把数据在分区列上进行排序,然后在对这些列进行编码。

 

SQL2005之前的技术处理列计算

1.(SET-BASED)

在SQL2005之前,已经有了简单的对列集合的计算,使用unique partitioning + sort 组合。

比如,你可以使用下面的技术:

SELECT empid, (SELECT COUNT(*)  FROM dbo.Sales AS S2  WHERE S2.empid <= S1.empid) AS rownumFROM dbo.Sales AS S1ORDER BY empid;

 

这是非常简单的,但也是非常慢的。。。

 

如果需要组合条件产生列数(即非唯一列的组合排序和断路器),可以这样做:

SELECT empid, qty, (SELECT COUNT(*)  FROM dbo.Sales AS S2  WHERE S2.qty < S1.qty   OR (S2.qty = S1.qty AND S2.empid <= S1.empid)) AS rownumFROM dbo.Sales AS S1ORDER BY qty, empid;

 

当然还有很多方法,比如用游标,就不写例子了。

 

2.(IDENTITY-Based Solution)

SELECT empid, qty, IDENTITY(int, 1, 1) AS rnINTO #SalesRN FROM dbo.Sales;SELECT * FROM #SalesRN;DROP TABLE #SalesRN;

标签:SqlServer,T-SQL
0
投稿

猜你喜欢

  • Django DRF APIView源码运行流程详解

    2022-10-29 01:21:44
  • python 安装库几种方法之cmd,anaconda,pycharm详解

    2021-05-23 14:19:58
  • Hugo Config模块构建实现源码剖析

    2024-05-09 09:48:03
  • python3使用smtplib实现发送邮件功能

    2022-01-08 11:13:59
  • 超详细注释之OpenCV构建透明的叠加层

    2021-08-18 14:51:01
  • PHP GD 图像处理组件的常用函数总结

    2023-11-21 21:39:17
  • python使用beautifulsoup从爱奇艺网抓取视频播放

    2021-07-29 01:10:42
  • Python抓取手机号归属地信息示例代码

    2023-03-02 21:24:59
  • Entity Framework使用Code First模式管理数据库

    2024-01-28 04:40:43
  • 非常详细的SQL--JOIN之完全用法

    2024-01-17 11:59:19
  • 设计之外随谈

    2009-06-16 14:38:00
  • python tensorflow学习之识别单张图片的实现的示例

    2023-06-30 21:11:32
  • MySQL插入中文不乱码的5种方法

    2024-01-17 10:47:21
  • Python执行外部命令subprocess的使用详解

    2023-01-21 14:57:49
  • 自动化测试Pytest单元测试框架的基本介绍

    2023-08-20 04:51:47
  • python 列表,数组和矩阵sum的用法及区别介绍

    2022-12-16 09:01:47
  • python实现名片管理系统

    2021-04-02 22:21:40
  • Python 正则表达式实现计算器功能

    2023-09-02 02:01:44
  • MySQL的WHERE语句中BETWEEN与IN的使用教程

    2024-01-28 22:37:31
  • 原生JS实现弹幕效果的简单操作指南

    2024-04-22 22:31:20
  • asp之家 网络编程 m.aspxhome.com