SQL Server 2008 介绍大家一个有趣的函数NTILE
通常有这样的需求,需要将数据按照某一字段分组,比如按成绩排列,将前25%为优秀,25%到50%有良好,50%到75%为差,75%到100%为不及格的情况。像这样需要将一个有序整体按照一定的比例划分数据的情况下,直接使用NTILE函数可以起到事半功倍的效果。NTILE(num)Num为要等分的数量
如
这样比直接用SQL语句写要方便得多。
如
--NTILE分类函数
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
BEGIN
DROP TABLE tba
END
GO
CREATE TABLE tba
(
ID INT IDENTITY(1,1) NOT NULL,
Total INT
)
GO
INSERT INTO tba
SELECT '100' UNION
SELECT '101' UNION
SELECT '102' UNION
SELECT '103' UNION
SELECT '104' UNION
SELECT '105' UNION
SELECT '106' UNION
SELECT '107' UNION
SELECT '108' UNION
SELECT '109' UNION
SELECT '110'
GO
SELECT ID,
Total,
CASE NTILE(4) OVER (ORDER BY Total DESC)
WHEN 1 THEN '25%'
WHEN 2 THEN '25%-50%'
WHEN 3 THEN '50%-75%'
WHEN 4 THEN '75%-100%' END AS Level
FROM tba
/*
ID Total Level
11 110 25%
10 109 25%
9 108 25%
8 107 25%-50%
7 106 25%-50%
6 105 25%-50%
5 104 50%-75%
4 103 50%-75%
3 102 50%-75%
2 101 75%-100%
1 100 75%-100%
*/
这样比直接用SQL语句写要方便得多。
...全文
相关推荐
Sql Server2005对t-sql的增强之排名函数
Sql Server2005对t-sql的增强之排名函数
[sql server]SQL Server2005杂谈(3):四个排名函数的比较.doc
SQL Server2005杂谈(3):四个排名函数的比较 SQL Server2005杂谈(3):四个排名函数的比较
SQL Server 2005 提供了4个行号排序函数
SQL Server 2005 提供了4个行号排序函数,合理的运用他们将可以非常方面的实现分页。
Functions in SQL Server Practical Guide.pdf
SQL SERVER 常用内置方法
SqlServer 2005 T-SQL Query 学习笔记(2)
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之前,已经有了简单的对列集


新技术前沿
