点滴积累,融会贯通
-----喜欢一切有兴趣的东西
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
268 随笔 :: 0 文章 :: 405 评论 :: 14 Trackbacks
SQL server 2005中新增函数及操作
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(
10
)
OVER
(
ORDER
BY
BirthDate
DESC
)
AS
'
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(
10
)
OVER
(
ORDER
BY
BirthDate
DESC
)
AS
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(
10
)
OVER
(
ORDER
BY
BirthDate
DESC
)
AS
a,BirthDate
FROM
HumanResources.Employee
)
AS
a
WHERE
a
=
1
posted on 2008-02-13 16:32
小寒
阅读(457)
评论(5)
编辑
收藏
所属分类:
数据库设计UNION技巧
评论
#1楼
2008-02-20 10:47
fenglei801221 [未注册用户]
太经典了,准备收藏
回复
引用
#2楼
[
楼主
]
2008-02-21 09:08
小寒
赫赫,上次没帮上忙,不好意思
最近倒是比较闲,项目结束了,赫赫
回复
引用
查看
#3楼
2008-03-07 11:29
耀威
不错,收藏了
回复
引用
查看
#4楼
[
楼主
]
2008-05-05 13:04
小寒
每个分类取最新的几条的SQL实现
问题详细描述如下:
比如,假设我们有下面这样结构的一张表,这张表的数据量非常巨大。
CREATE TABLE table1( [ID] [bigint] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](128) NOT NULL, [class] int not null, [date] datetime not null)class 表示分类编号。 分类数不固定, 至少有上千种分类
date 表示该条记录被更新的时间
我们现在想获得每个分类最新被更新的5条记录。
解决方案
select id,name,class,date from(select id,name,class,date ,row_number() over(partition by class order by date desc)as rowindex from table1) awhere rowindex <= 5
解决方案简单说明:
这个解决方案的关键就是使用了SQL 2005 的 ROW_NUMBER 这个全新的函数。
ROW_NUMBER ( ) 函数的语法如下:
ROW_NUMBER ( ) OVER ( [ <partition_by_clause> ] <order_by_clause> )
OVER 子句中的 PARTITION BY 将结果集分为多个分区。
OVER 子句中的 ORDER BY 将对 ROW_NUMBER 进行排序。
回复
引用
查看
#5楼
2008-07-07 09:42
叶宁
收藏了,谢了!
回复
引用
查看
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关文章:
MS SQL Server 2000安装不成功的原因
SQL server 2005中新增的排序函数及应用
Eclipse基础--安装eclipse及语言包
写有效率的SQL查询(III)
自动安装SQL Server数据库
SQL Server 2005 Remote Access
相关链接:
历史上的今天:
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#网络编程概述 一
2006-02-13
ProtocolType 枚举----指定 Socket 类支持的协议
2006-02-13
DataGrid 功能实现收集(转)保留做参考
2006-02-13
给DataGrid添加序号、导航键、鼠标划过事件、删除确认框(转)
所属分类的其他文章:
SQL2000/2005自动生成数据字典
SQL server 2005中新增函数及操作
典型SQL 语句总结
SQL Server 基础概念集[转]
简单游标分析
sql server 中利用自定义函数分隔字符串
判断表是否存在,存在则删除表
求助!!SQL SERVER2005 查询连接超时问题?
在SQL语句查询结果中加入自增长列
SQLServer基本函数
最新IT新闻:
淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略
微软研究院发布 AutoCollage - 整理并融合照片
2008年9月5日科技博客精选
SNS网站风靡影响工作效率 公司下令封杀
《孢子》正式发布
博客园新闻频道
博客园首页
社区
<
2008年2月
>
日
一
二
三
四
五
六
27
28
29
30
31
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
1
2
3
4
5
6
7
8
公告
多多的学习,多多的积累, 虽然很多东西自己不知道, 但只要不停的学习别人的东西, 终将无所不知 MSN:liyuwang83113@163.com
搜索
留言簿
(13)
给我留言
查看留言
我参加的小组
ASP.NET
Web技术联盟
天津Net俱乐部
我参与的团队
天津.NET俱乐部(0/788)
企业内网开发集成应用(0/176)
Windows Vista开发(0/235)
软件项目管理团队(0/197)
.net企业应用开发(0/120)
随笔分类
AD操作(4)
(rss)
Ajax(6)
(rss)
ASP.NET编程&技巧(45)
(rss)
C#编程基础(42)
(rss)
C#网络编程(10)
(rss)
DataGrid&&GridView(15)
(rss)
EnterpriseLibrary(1)
(rss)
JavaScript专栏(23)
(rss)
ORM(3)
(rss)
SharePoint(11)
(rss)
Web打印(4)
(rss)
Windows/Webservice(3)
(rss)
韩语学习系列(4)
(rss)
软件工程专栏(24)
(rss)
设计模式学习(15)
(rss)
数据库设计UNION技巧(29)
(rss)
杂文-日记(32)
(rss)
.NET中重要技术
1-.Net设计模式(一)
梦幻Dot Net的博客
2-.Net设计模式(二)
Terrylee 的博客
3-ORM-NHibernate
张老三的博客
4-ORM-SPL
听棠.NET的博客
5-Enterprise Library
rickie的博客(企业类库)
6-自由、创新、研究、探索
一些开源的知识
7-海洋工作室
Sharepoint,SPS,Office
8-MagicAjax.NET
MagicAjax.NET
90-数据库操作
邹建的专栏
90-数据库应用
吕震宇的博客
91-quickstart
Microsoft quickstart
92-connectionstrings
Connection String
93-Enterprise Library
Terry的文章
94-C#手机推箱子
C#手机推箱子
95-sourceforge
开源源码下载
96-李战Blog
(rss)
李战Blog
97-Linq to sql
(rss)
Linq to sql
积分与排名
积分 - 184221
排名 - 180
阅读排行榜
1. NTLDR is missing 文件丢失如何解决(22860)
2. SQL Server 2000 函数使用---CAST 和 CONVERT(8571)
3. 项目管理-让什么人做什么事(3036)
4. B/S结构与C/S结构(转)(2669)
5. window.showModalDialog和window.open关闭子页面时刷新父页面(2550)
Powered by:
博客园
Copyright © 小寒