点滴积累,融会贯通

-----喜欢一切有兴趣的东西

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  414 随笔 :: 0 文章 :: 483 评论 :: 96万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
1 SQL server 2005中新增的排序函数及操作  
SELECT 
    
YEAR(BirthDate),
    ROW_NUMBER() 
OVER(ORDER BY YEAR(BirthDate)) AS 'RowNumber',/* 按年产生一个唯一的序号 */
    ROW_NUMBER() 
OVER(PARTITION BY YEAR(BirthDate) ORDER BY BirthDate) AS RowNumberPartition, /* 每年产生一个唯一的序列 */
    RANK() 
OVER(ORDER BY YEAR(BirthDate)) AS 'Rank'/* 产生一个非紧密排名 */
    DENSE_RANK() 
OVER(ORDER BY YEAR(BirthDate)) AS 'Dense_Rank'/* 产生一个紧密排名 */
    NTILE(
10OVER(ORDER BY BirthDate DESCAS 'ntile' /* 将结果分成10个组 */
FROM HumanResources.Employee
ORDER BY BirthDate
看看新的排序函数如何解决SQL server 2000中不方便解决的问题
--按BirthDate排序,取第10条到20条的数据 (这一定是最激动人心的新特性,哈哈)
SELECT BirthDate FROM 
(
    
SELECT
        ROW_NUMBER() 
OVER(ORDER BY BirthDate) AS a,BirthDate
    
FROM HumanResources.Employee
AS a
WHERE a BETWEEN 10 AND 20

--将数据分成十份,取第三份
SELECT
    BirthDate
FROM
(
SELECT 
    NTILE(
10OVER(ORDER BY BirthDate DESCAS a,BirthDate
FROM HumanResources.Employee
AS a
WHERE a = 3再来看看如何用新的排序函数解决以前在SQL server 2000中的问题
-- 出生的员工最多的一年出生多少员工(有点)
/* SQL server 2000 */
SELECT MAX(a)
FROM
(
SELECT COUNT(EmployeeID) AS a FROM HumanResources.Employee GROUP BY YEAR(BirthDate)
AS a

/* SQL server 2005  */
SELECT MAX(a)
FROM
(
SELECT 
    ROW_NUMBER() 
OVER(PARTITION BY YEAR(BirthDate) ORDER BY BirthDate) AS a
FROM HumanResources.Employee
AS a

-- 出生日期涵盖了多少年
/* SQL server 2000  */
SELECT COUNT(DISTINCT YEAR(BirthDate)) FROM HumanResources.Employee

/* SQL server 2005 */
SELECT MAX(a)
FROM
(
SELECT 
    DENSE_RANK() 
OVER(ORDER BY YEAR(BirthDate)) AS a
FROM HumanResources.Employee
AS a

-- 显示前10%的数据
/* SQL server 2000  */
SELECT TOP 10 Percent BirthDate FROM HumanResources.Employee

/* SQL server 2005  */
SELECT
    BirthDate
FROM
(
SELECT 
    NTILE(
10OVER(ORDER BY BirthDate DESCAS a,BirthDate
FROM HumanResources.Employee
AS a
WHERE a = 1 
posted on   小寒  阅读(1921)  评论(5编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2006-02-13 指定datagrid编辑框的宽度及相映属性(转)---备用
2006-02-13 简单的多人聊天(C#.Socket)
2006-02-13 AddressFamily 枚举-----指定 Socket 类的实例可以使用的寻址方案
2006-02-13 SocketType 枚举----指定 Socket 类的实例表示的套接字的类型
2006-02-13 C#网络编程概述 三
2006-02-13 C#网络编程概述 二
2006-02-13 C#网络编程概述 一
点击右上角即可分享
微信分享提示