[SQL SERVER系列]之常用函数和开窗函数介绍及实例
本文主要介绍SQL SERVER数据库中一些常用的系统函数及其SQL SERVER 2005以上支持的开窗函数。
1.常用函数
--从字符串右边截取指定字符数
select RIGHT('HELLO', 2) --LO
--受影响的行数
select @@ROWCOUNT
--求绝对值ABS()
SELECT ABS(-2.0) --2.0
--计算指数的函数POWER()
, 0.5)
, 3)
--求平方根SQRT()
SELECT SQRT(64.02)
--取随机数,返回到之间的随机浮点值Rand()
SELECT Rand()
--将字符串转换为小写LOWER()
SELECT LOWER('HELLO WORLD')
--将字符串转换为大写UPPER()
SELECT UPPER(LOWER('HELLO WORLD'))
--取ASCII码ASCII()
SELECT ASCII('A') --65
--取对应ASCII码的字符CHAR()
SELECT CHAR(ASCII('A')) --A
--日期时间函数
--获取当前时间
SELECT GETDATE()
--获取日期部分
), GETDATE(), 101) --03/11/2014
--获取时间部分
), GETDATE(), 108) --17:00:10
--获取某个日期是礼拜几
SELECT DATENAME(WEEKDAY, GETDATE())
--返回guid,位的唯一值
select Newid()
--若P1非空,返回P1;否则,返回default默认值
COALESCE(P1,default)
COALESCE(P.FName, '没有开单人')
--返回当前所用语言名称
select @@language
--返回允许同时进行的最大用户连接数
select @@MAX_CONNECTIONS
--返回本地sql server的名称
select @@SERVERNAME
--返回当前安装的sql server的日期,版本和处理器类型
print @@VERSION
--确定输入的表达式是否为有效的日期
select ISDATE('2014-03-17')
), 123.00)+'abc' --123.00abc
))+'abc' --123.00abc
select cast('abc' as int) --转换出错
select @@ERROR --结果为,返回执行上一个sql语句的错误号,若没有错误,结果为
2.开窗函数
可以看到与聚合函数不同的是,开窗函数在聚合函数后增加了一个 OVER 关键字。开窗函数的调用格式为: 函数名(列) OVER(选项) OVER 关键字表示把函数当成开窗函数而不是聚合函数。SQL 标准允许将所有聚合函数用做开窗函数,使用 OVER 关键字来区分这两种用法。
开窗函数 COUNT(*) OVER()对于查询结果的每一行都返回所有符合条件的行的条数。OVER 关键字后的括号中还经常添加选项用以改变进行聚合运算的窗口范围。如果 OVER 关键字后的括号中的选项为空,则开窗函数会对结果集中的所有行进行聚合运算。
SELECT FCITY , FAGE , 的所有记录数。
--ROW_NUMBER() OVER返回按某种规则排序后的某行的行数,只有SQL SERVER 2005以上支持
select * from (select ROW_NUMBER() OVER(ORDER BY UserID DESC) as RowNum, * FROM Tse_User) as A
WHERE A.RowNum >= 3 AND A.RowNum <= 4
-COUNT(0) OVER(), 统计总数
) OVER() from dbo.T_Reader where fage > 30
--COUNT(0) OVER(PARTITION BY fyearofbirth), 统计某个分区的数量
) OVER(PARTITION BY fage) FROM T_Reader
--Rank()遇相同的编号顺延,DENSE_RANK()遇相同的编号不变
select *, RANK() over(order by fage),
DENSE_RANK() over(order by fage),
ROW_NUMBER() over(order by fage) from t_reader
--按年龄排序,分成份,并计算每行对应的编号
) over(order by fsalary) from t_reader
--通过分区函数实现计算某个产品的销售量在同类产品总销售量中所占百分比
select T_Merchandise.FName, T_SaleBillDetail.FCount,
T_SaleBillDetail.FCount*1.0/SUM(T_SaleBillDetail.FCount) over(partition by T_Merchandise.FName) from
T_SaleBillDetail inner join T_Merchandise
on T_SaleBillDetail.FMerchandiseId = T_Merchandise.FId
如果您有什么问题,欢迎在下面评论,我们一起讨论,谢谢~
如果您觉得还不错,不妨点下右下方的推荐,有您的鼓励我会继续努力的~
[SQL SERVER系列]之常用函数和开窗函数介绍及实例的更多相关文章
- SQL Server进阶(八)查询——开窗函数、四大排名函数、透视数据、逆透视数据
概述 ROW_NUMBER() OVER(PARTITION BY CustId ORDER BY ID DESC) https://www.jb51.net/article/75533.htm 开窗 ...
- SQL Server系列
这里整理了我学习SQL Server的全部文章,包括从基础到高级,做一个目录,方便以后查找. SQL Server数据类型 SQL Server中开发常用的数据类型 单表查询和多表查询 一个单表查询的 ...
- Sql Server中不常用的表运算符之APPLY(2)
在Sql Server中不常用的表运算符之APPLY(1)中提到,SQL2005中新支持的APPLY的特性:1.可以直接将表表达式(表值函数或者子查询)作为APPLY语句的右表连接左表.2.由于使用A ...
- SQL Server中,常用的全局变量
在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值.全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数.下表就是SQL Server中一些常用的全局变量. 全局 ...
- hive常用函数 wordCount--Hive窗口函数1.1.1 聚合开窗函数聚合开窗函数实战
第三天笔记 第三天笔记 SQL练习Hive 常用函数关系运算数值计算条件函数日期函数重点!!!字符串函数Hive 中的wordCount1.1 Hive窗口函数1.1.1 聚合开窗函数聚合开窗函数实战 ...
- SQL Server 系列文章快速导航(SWF版)
一.前言 在博客园写博客不自不觉已经有5个年头了,一开始只是为了记录工作中遇到的问题和解决办法,后来写的文章不自不觉的侧重在SQL Server方面的技术文章,在2014年1月终于鼓起勇气申请了微软S ...
- Sql Server中不常用的表运算符之UNPIVOT
在Sql Server中不常用的表运算符之PIVOT中,介绍了PIVOT表运算符,现在来说说与之相对应的另一个表运算符UNPIVOT. 从名字可以看出,这个运算符的作用与PIVOT刚好相反,是将一行的 ...
- Microsoft SQL Server 管理 (常用管理及维护命令)
--查询当前连接的实例名 select @@servername --察看任何数据库属性 sp_helpdb master --设置单用户模式,同时立即断开所有用户 alter database No ...
- SQL Server系列文章目录
SQL Server系列文章目录SQL Server系列文章目录SQL Server系列文章目录SQL Server系列文章目录
随机推荐
- 【数论,找规律】Uva 11526 - H(n)
原来做过的题再看还是没想出来,看来当时必然没有真正理解.这次回顾感觉理解更透彻了. 网上的题解差不多都是一个版本,而且感觉有点扯.根据n=20猜出来的? 好吧哪能根据一个就猜到那么变态的公式.其实这题 ...
- KMP模版
#include<iostream> #include<cstdio> #include<cstring> using namespace std; ]; void ...
- linux信息查找
问题: 1. 当使用一台linux机器的时候,常常需要确认当前所用操作系统的版本信息,内核信息等, 操作系统的版本信息可以通过以下命令完成,比如:lsb_release -a:cat /etc/iss ...
- CSS3 媒体记
css3 媒体 Media Type 媒体类型 媒体类型是CSS2中一个非常有用的属性.通过媒体类型可以对不同的设备指定不同的样式. W3C共列出十种媒体类型,如表: 值 设备类型 all 所有设备 ...
- 关于System.Collections空间
System.Collections命名空间包含可使用的集合类和相关的接口,提供了集合的基本功能. 该命名空间下的.NET非泛型集合类如下所示: — System.Collections.ArrayL ...
- WM_NCCALCSIZE消息处理详解
[前言]指定应用程序的标题高度和边框的宽度的方法有很多种.其中最普遍的方法有下面的两种:第一种:创建没有标题栏应用程序,在客户区让出一部分空间用一幅图片画一个标题栏,让人“误认为”是标题栏.第二种:处 ...
- ubuntu(16.04.01)学习-day1
1.修改root用户密码 sudo passwd root 按提示进行设置. 2.从Ubuntu 16.04开始,用户可以实现改变启动器的位置,可以将启动器移到屏幕底部,但是无法移到右边或顶部.打开终 ...
- python学习day3--python基础
1.python不用声明变量的类型,运行时python自己进行判断 2.尽量不要用“+”去拼接字符串,运行时会每遇到一个“+”就开辟一块内存空间,使用如下方式进行字符串的拼接. msg=''' inf ...
- linux c/c++ IP字符串转换成可比较大小的数字
由www.169it.com搜集整理 IP字符串转换成可比较大小的数字,具体代码如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include "stdio. ...
- MVC5----用户登陆及验证码
随便写写记录一下学习的过程 登陆 Models中添加添加 public class LoginViewModel { [Required(ErrorMessage = "*")] ...