SQL技术内幕-6 rank()over(order by XX COLLATE) 的用法

DECLARE @Names TABLE (
  name VARCHAR(20)
);

INSERT INTO @Names VALUES
  (‘DeSzmetch‘),(‘DESZMETCH‘),(‘DESZMETCK‘),(‘DesZmetch‘),(‘deszmetch‘);

SELECT
  name,
  RANK() OVER (ORDER BY name COLLATE Latin1_General_BIN) AS [Lat...BIN],
  RANK() OVER (ORDER BY name COLLATE Traditional_Spanish_CI_AS) AS [Tra...CI_AS],
  RANK() OVER (ORDER BY name COLLATE Latin1_General_CS_AS) AS [Lat...CS_AS],
  RANK() OVER (ORDER BY name COLLATE Latin1_General_CI_AS) AS [Lat...CI_AS],
  RANK() OVER (ORDER BY name COLLATE Hungarian_CI_AS) AS [Hun..._CI_AS]
FROM @Names
ORDER BY name COLLATE Latin1_General_BIN;
GO

  ---order 不要后面的字段也可以不同,但是都会按照最后一个排列顺序

DECLARE @Student table   --学生成绩表
(
 id int,  --主键
 Grade int, --班级
 Score INT, --分数
 name VARCHAR(120)  --名字
)
INSERT INTO @Student VALUES
(1,1,88,‘A1‘),(2,1,66,‘B1‘),(3,1,75,‘C1‘),(4,2,30,‘D1‘),(5,2,70,‘E1‘),
( 6,2,80,‘F1‘),(7,2,60,‘G1‘),(8,3,90,‘H1‘),(9,3,70,‘I1‘),(10,3,80,‘j1‘)

--SELECT * FROM  @Student

SELECT name,Score,
rank() OVER(ORDER BY Grade DESC) AS rankGrade,
rank() OVER(ORDER BY Score DESC) AS rankScore,
rank() OVER(ORDER BY id DESC) AS rankid
FROM  @Student

  

时间: 2024-10-08 10:37:04

SQL技术内幕-6 rank()over(order by XX COLLATE) 的用法的相关文章

SQL技术内幕三

Select 分析一个查询实例 Select empid,year(orderdate) as orderYear,count(*) as orderCount From dbo.orderInfo where custid=71 group by empid,Year(orderdate) having count(*) >1 order by empid 以上语句在sql server内的执行顺序是 from--where--group by--having --select--order

SQL技术内幕四

数据类型: sql server只接受两种数据类型 1. 普通字符 varchar char 用一个字节表示一个字符,表示英文 2.unicode   nchar nvarchar 用两个字节表示一个字符 char nchar都是固定长度的,不论其中字符的实际长度,适用于写入为主的系统,读取效率低 varchar nvarchar 是可变长度,读取速度会快但是更新会慢

SQL技术内幕二DDL

创建数据库: if db_id('DBTest') is nullcreate database DBTest 创建表 use eb_fy_data_test---use 切换所在数据库上下文 if object_id('UserTest','u') is not null drop TABLE UserTest CREATE TABLE UserTest {} 数据完整性 1.主键约束 alter table UserTest add constraint PK_UserTest Primar

SQL技术内幕一

范式:关系模型的规范化规则. Codd提出的三个数据库范式: 1. 第一范式 第一范式要求表中的每一行都是必须是唯一的.因为关系型数据库是基于集合论的,而集合的定义中,要求每一个元素都是唯一的(在关系数据库中可以用键来区别).因此所有的关系数据库表必然是满足第一范式的. 2.第二范式 第二范式要求必须满足第一范式,其次要求非键值属性和候选键值属性之间必须满足一定的条件.即所有非键值属性都完全依赖与整个候选键值所有属性. 如何理解名词参照http://www.cnblogs.com/lumnm/a

笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-02 单表查询

SELECT子句中的别名 SELECT子句是在FROM.WHERE.GROUP BY,以及HAVING子句后处理的,这意味着对于SELECT子句之前处理的那些子句,在SELECT子句中为表达式分配的别名并不存在.例如: SELECT orderid, YEAR(orderdate) AS orderyear FROM Sales.Orders WHERE orderyear > 2006; 这是错误的,WHERE子句中并不能识别orderyear别名,应该改为: SELECT orderid,

SQL Server技术内幕笔记合集

SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnblogs.com/lyhabc/articles/3914213.html Microsoft SQL Server 2005技术内幕:T-SQL查询笔记http://www.cnblogs.com/lyhabc/articles/3912608.html Microsoft SQL Server 2

学习Microsoft SQL Server 2008技术内幕:T-SQL语法基础

第 2 章: 单表查询 use TSQLFundamentals2008; select * from Sales.orders; select empid, year(orderdate) as orderyear, Count(*) as numorders from Sales.Orders where custid='71' group by empid, year(orderdate) having count(*) >1 order by empid, orderyear; sele

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视(Pivoting)就是把数据从行的状态旋转为列的状态的处理.其处理步骤为: 相信很多人在笔试或面试的时候被问到如何通过SQL实现行转列或列转行的问题,可能很多人当时懵逼了,没关系,下面我们通过例子来理解. (1)准备数据 --1.0准备数据 USE tempdb; IF OBJECT_ID('dbo

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库的物理布局 数据库在物理上由数据文件和事务日志文件组成,每个数据库必须至少有一个数据文件和一个日志文件. (1)数据文件用于保存数据库对象数据.数据库必须至少有一个主文件组(Primary),而用户定义的文件组则是可选的.Primary文件组包括 主数据文件(.mdf),以及数据库的系统目录(cat