聚合函数
函数名称 | 说明 |
---|---|
SUM | 返回表达式中所有值的和 |
AVG | 计算平均值 |
MIN | 返回表达式的最小值 |
MAX | 返回表达式的最大值 |
COUNT | 返回组中项目的数量 |
DISTINCT | 返回一个集合,并从指定集合中删除重复的元组 |
HAVING | 返回一个集合,查询数据表中的重复记录 |
-
SUM
SUM函数返回表达式中所有值的和或仅非重复值的和。SUM 只能用于数字列。空值将被忽略。
语法如下:
SUM ( [ ALL | DISTINCT ] expression )
参数说明:
ALL:对所有的值应用此聚合函数。ALL是默认值。
DISTINCT:指定 SUM 返回唯一值的和。
expression:常量、列或函数与算术、位和字符串运算符的任意组合。expression 是精确数字或近似数字数据类型分类(bit 数据类型除外)的表达式。
返回类型:以最精确的 expression 数据类型返回所有 expression 值的和。 -
AVG
AVG函数返回组中各值的平均值。将忽略空值。
语法如下:
AVG ( [ ALL | DISTINCT ] expression )
参数说明:
ALL对所有的值进行聚合函数运算。ALL 是默认值.
DISTINCT:指定 AVG只使用每个值的唯一实例,而不管该值出现了多少次。
expression:是精确数值或近似数值数据类别(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。
返回类型:返回类型由表达式的运算结果类型确定。 -
MIN
MIN函数返回表达式中的最小值。
语法如下:
MIN ( [ ALL | DISTINCT ] expression )
参数说明:
ALL:对所有的值进行聚合函数运算。ALL 是默认值。
DISTINCT:指定每个唯一值都被考虑。DISTINCT 对于 MIN 无意义,使用它仅仅是为了符合 SQL-92 兼容性。
expression:常量、列名、函数以及算术运算符、按位运算符和字符串运算符的任意组合。MIN 可用于数字列、char列、varchar列 或 datetime 列,但不能用于 bit 列。不允许使用聚合函数和子查询
返回类型:返回与 expression 相同的值。 -
MAX
MAX函数返回表达式的最大值。
语法如下:
MAX ( [ ALL | DISTINCT ] expression )
参数说明:
ALL:对所有的值应用此聚合函数。ALL 是默认值。
DISTINCT:指定考虑每个唯一值。DISTINCT 对于 MAX 无意义,使用它仅仅是为了SQL-92 兼容性
expression:常量、列名、函数以及算术运算符、按位运算符和字符串运算符的任意组合。MAX 可用于数字列、character列和 datetime列,但不能用于 bit 列。不允许使用聚合函数和子查询。
返回类型:返回与 expression 相同的值。 -
COUNT
COUNT函数返回组中的项数。COUNT 返回 int 数据类型值。
语法如下:
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
参数说明:
ALL:对所有的值进行聚合函数运算。ALL 是默认值。
DISTINCT:指定 COUNT 返回唯一非空值的数量。
expression:除 text、image 或 ntext 以外任何类型的表达式。不允许使用聚合函数和子查询。
返回类型:int类型。 -
DISTINCT
DISTINCT函数,对指定的集求值,删除该集中的重复元组,然后返回结果集。
语法如下:
Distinct(Set_Expression)
参数说明:
Set_Expression:返回集的有效多维表达式 (MDX)。
说明:
如果 Distinct 函数在指定的集中找到了重复的元组,则此函数只保留重复元组的第一个实例,同时保留该集原来的顺序。 -
HAVING
HAVING函数,查询数据表中的重复记录,可以借助HAVING子句实现,该子句用来指定组或聚合的搜索条件。HAVING子句只能与SELECT语句一起使用,而且,它通常在GROUP BY子句中使用。(不常用)
HAVING子句语法如下:
(HAVING [search condition])
参数说明:
[search condition]:指定组或聚合应满足的搜索条件。
具体操作代码,如下,需要自行创建一个数据库
USE DBDEMO4
//创建一张表
CREATE TABLE table4(
[NAME] VARCHAR(20) NOT NULL,
ID INT NOT NULL,
XB VARCHAR(2) NOT NULL,
AGE INT NULL,
[Money] INT NULL
)
//查询表
SELECT * FROM dbo.table4
//添加数据
INSERT INTO table4
SELECT '李白',99999,'男',20,4000 UNION
SELECT '韩信' ,88888, '男',22,5000 UNION
SELECT '花木兰' ,77777, '女',20,6000 UNION
SELECT '赵云' ,66666, '男',25,4000 UNION
SELECT '露娜' ,55555, '女',22,8000
//聚合函数
//求和 (上表中所有人ID的总和)
SELECT SUM(ID)FROM table4
//平均值(上表中所有人ID的平均值)
SELECT AVG(ID)FROM table4
//最小值(上表中所有人ID的最小值)
SELECT MIN((ID))FROM table4
//最大值(上表中所有人ID的最大值)
SELECT MAX((ID))FROM table4
//统计(上表中所有人ID的总共出现的次数 / 多少组数据)
SELECT COUNT((ID))FROM table4
数学函数
- ABS
ABS函数返回数值表达式的绝对值。
语法如下:
ABS(numeric_expression)
参数说明:
numeric_expression:精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。
返回类型:提交给函数的数值表达式的数据类型。 - PI
PI函数返回 PI 的常量值。
语法如下:
PI ( )
返回类型:float型。 - POWER
POWER函数返回对数值表达式进行幂运算的结果。Power 函数的计算结果必须为整数。
语法如下:
POWER(numeric_expression,power)
参数说明:
numeric_expression:是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。
power:有效的数值表达式。 - RAND
RAND函数返回从 0 到 1 之间的随机 float 值。
语法如下:
RAND ( [ seed ] )
参数说明:
seed:提供种子值的整数表达式(tinyint、smallint 或 int)。如果未指定 seed,则 Microsoft SQL Server 数据库引擎 随机分配种子值。对于指定的种子值,返回的结果始终相同。
返回类型:float类型。
注意:
使用同一个种子值重复调用 RAND() 会返回相同的结果 - ROUND
ROUND函数返回一个数值,舍入到指定的长度或精度。
语法如下:
ROUND ( numeric_expression , length [ ,function ] )
参数说明:
numeric_expression:精确数值或近似数值数据类别(bit 数据类型除外)的表达式。
length:是numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或 int 类型的表达式。如果 length 为正数,则将 numeric_expression 舍入到 length 指定的小数位数。如果 length 为负数,则将 numeric_expression 小数点左边部分舍入到 length 指定的长度。
function:要执行的操作的类型。function 必须为 tinyint、smallint 或 int。如果省略 function 或其值为 0(默认值),则将舍入 numeric_expression。如果指定了 0 以外的值,则将截断 numeric_expression。
返回类型:返回与 numeric_expression 相同的类型。 - SQUARE
SQUARE(平方)函数
SQUARE函数返回数值表达式的平方。语法说明如下:
SQUARE(numeric_expression)
参数说明:
numeric_expression:任意数值数据类型的数值表达式。 - SQRT
SQRT(平方根)函数
SQRT函数返回数值表达式的平方根。语法如下:
SQRT(numeric_expression)
参数说明:
numeric_expression 是任意数值数据类型的数值表达式。 - SIN
SIN函数
SIN函数以近似数字 (float) 表达式返回指定角度(以弧度为单位)的三角正弦值。
语法如下:
SIN ( float_expression )
参数说明:
float_expression:属于 float 类型或能够隐式转换为 float 类型的表达式。
返回类型:float类型。 - COS
COS函数
返回指定表达式中以弧度表示的指定角的三角余弦。
语法如下:
COS ( float_expression )
参数说明:
float_expression:float 类型的表达式。
返回类型:float类型 - TAN
TAN函数
TAN函数返回输入表达式的正切值。
语法如下:
TAN ( float_expression )
参数说明:
float_expression:是 float 类型或可隐式转换为 float 类型的表达式,解释为弧度数。
返回类型:float类型。 - COT
COT函数
COT函数返回指定的 float 表达式中所指定角度(以弧度为单位)的三角余切值。
语法如下:
COT ( float_expression )
参数说明:
float_expression:属于 float 类型或能够隐式转换为 float 类型的表达式。
返回类型:float类型。
具体操作代码如下
字符串函数
- ASCII
ASCII函数返回字符表达式中最左侧的字符的 ASCII 代码值。
语法如下:
ASCII ( character_expression )
参数说明:
character_expression:char 或 varchar 类型的表达式。
返回类型:int类型。
说明:
ASCII码共有127个,其中Microsoft Windows不支持1~7、11~12和14~31之间的字符。值8、9、10和13分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序而对文本显示有不同的影响。 - CHARINDEX
CHARINDEX函数返回字符串中指定表达式的起始位置(如果找到)。搜索的起始位置为 start_location。
语法如下:
CHARINDEX ( expression1 ,expression2 [ , start_location ] )
参数说明:
expression1:包含要查找的序列的字符表达式。expression1 最大长度限制为 8000 个字符。
expression2:要搜索的字符表达式。
start_location:在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。
返回类型:如果 expression2 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max),则为 bigint,否则为 int。 - LEFT
LEFT函数返回字符串中从左边开始指定个数的字符。
语法如下:
LEFT ( character_expression , integer_expression )
参数说明:
character_expression:字符或二进制数据表达式。character_expression 可以是常量、变量或列。character_expression 可以是任何能够隐式转换为 varchar 的数据类型。否则,请使用 CAST 函数对 character_expression 进行显式转换。
integer_expression:正整数。如果 integer_expression 为负,则返回空字符串。
返回类型:
当 character_expression 为非 Unicode 字符数据类型时,返回 varchar。
当 character_expression 为 Unicode 字符数据类型时,返回 nvarchar - RIGHT
RIGHT函数返回字符表达式中从起始位置(从右端开始)到指定字符位置(从右端开始计数)的部分。
语法如下:
RIGHT(character_expression,integer_expression)
参数说明:
character_expression:是从中提取字符的字符表达式。
integer_expression:是起始位置,用正整数表示。如果 integer_expression 是负数,则返回一个错误。 - LEn
LEN函数返回字符表达式中的字符数。如果字符串中包含前导空格和尾随空格,则函数会将它们包含在计数内。LEN 对相同的单字节和双字节字符串返回相同的值。
语法如下:
LEN(string_expression)
参数说明:
string_expression:要计算的字符串表达式。 - REPLACE
REPLACE函数将表达式中的一个字符串替换为另一个字符串或空字符串后,返回一个字符表达式。语法如下:
REPLACE(character_expression,searchstring,replacementstring)
参数说明:
character_expression:是函数要搜索的有效字符表达式。
searchstring:是函数尝试定位的有效字符表达式。
replacementstring:是用作替换表达式的有效字符表达式 - REVERSE
REVERSE函数按相反顺序返回字符表达式。
语法如下:
REVERSE(character_expression)
参数说明:
character_expression:是要反转的字符表达式。 - STR
STR函数返回由数字数据转换来的字符数据。语法如下:
STR ( float_expression [ , length [ , decimal ] ] )
参数说明:
float_expression:带小数点的近似数字 (float) 数据类型的表达式。
length:总长度。它包括小数点、符号、数字以及空格。默认值为 10。
decimal:小数点后的位数。decimal 必须小于或等于 16。如果 decimal 大于 16,则会截断结果,使其保持为小数点后具有十六位。 - SUBSTRING
SUBSTRING函数为字符表达式、二进制表达式、文本表达式或图像表达式的一部分。
语法如下:
SUBSTRING ( value_expression ,start_expression , length_expression )
参数说明:
value_expression:是 character、binary、text、ntext 或 image 表达式。
start_expression:指定返回字符的起始位置的整数或 bigint 表达式。如果 start_expression 小于 0,会生成错误并终止语句。如果 start_expression 大于值表达式中的字符数,将返回一个零长度的表达式。
length_expression:是正整数或指定要返回的 value_expression 的字符数的 bigint 表达式。如果 length_expression 是负数,会生成错误并终止语句。如果 start_expression 与 length_expression 的总和大于 value_expression 中的字符数,则返回整个值表达式。
返回类型:如果 expression 是受支持的字符数据类型,则返回字符数据。如果 expression 是支持的 binary 数据类型中的一种数据类型,则返回二进制数据。
具体代码操作如下:
字符串
--ASCII表
SELECT ASCII('a')
SELECT ASCII(2)
--CHARINDEX函数
SELECT CHARINDEX('猴三棍',NAME) AS "泼猴" FROM table4 WHERE ID=66666
--LEFT函数
SELECT LEFT(NAME,1) AS "姓氏",COUNT(LEFT(NAME,1)) AS "数量" FROM table4 GROUP BY LEFT(NAME,1)
--RIGHT
SELECT RIGHT(NAME,1) AS "名",COUNT(RIGHT(NAME,1)) AS "数量" FROM table4 GROUP BY RIGHT(NAME,1)
--LEn函数
SELECT LEN(1234656) AS "字符个数"
SELECT LEN('昨夜雨疏风骤,浓睡不消残酒,试问卷帘人却道海棠依旧,知否知否') AS "字符个数"
--REPLACE函数
SELECT REPLACE('亡羊补牢,为时不晚','为时不晚','为时已晚') AS "替换结果"
--REVERSE函数
SELECT REVERSE('我爱你,亲') AS "反转结果"
--STR函数
SELECT STR(123.6235) AS "STR"
SELECT STR(123.6235,10,5) AS "STR"
SELECT STR(123.6235) AS "STR"
--SUBSTRING函数
SELECT Pwd, SUBSTRING(Pwd,2,3) AS "编号" FROM table4
日期时间函数
- GETDATE
GETDATE函数返回系统的当前日期。GETDATE 函数不使用参数。
注意:
GETDATE 函数的返回结果的长度为 29 个字符。
语法如下:
GETDATE() - DAY
DAY函数返回一个整数,表示日期的“日”部分。
语法如下:
DAY(date)
参数说明:
date:以日期格式返回有效的日期或字符串的表达式 - MONTH
MONTH函数返回一个表示日期中的“月份”日期部分的整数。
语法如下:
MONTH(date)
参数说明:
date:是任意日期格式的日期 - YEAR
YEAR函数用于返回指定日期的年份。
语法如下:
YEAR (date)
参数说明:
date表示返回类型为datetime或smalldatetime的日期表达式。
有关YEAR函数使用的几点说明如下:
该函数等价于DATEPART(yy,date)。
SQL Server数据库将0解释为1900年1月1日。
在使用日期函数时,其日期只应在1753~9999年之间,这是SQL Server系统所能识别的日期范围,否则会出现错误。 - Datediff
DATEDIFF函数用于返回日期和时间的边界数。
语法如下:
DATEDIFF (datepart,startdate,enddate)
参数说明:
datepart规定了应在日期的哪一部分计算差额的参数。
startdate表示计算的开始日期,startdate是返回datetime值、smalldatetime值或日期格式字符串的表达式。
enddate表示计算的终止日期。enddate是返回datetime值、smalldatetime值或日期格式字符串的表达式。
SQL Server识别的日期部分和缩写。 - DateADD
DATEADD函数将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。
语法如下:
DATEADD(datepart, number, date)
参数说明:
datepart:指定要与数值相加的日期部分的参数。
number:用于与 datepart 相加的值。该值必须是分析表达式时已知的整数值。
date:返回有效日期或日期格式的字符串的表达式。
注意:如果指定一个不是整数的值,则将废弃此值的小数部分。
时间日期函数
--GETDATE函数
SELECT GETDATE() AS "现在时间"
--DAY函数
SELECT DAY('2018-1-16') AS "DAY"
SELECT DAY(GETDATE()) AS "DAY"
--MONTH函数
SELECT MONTH(GETDATE()) AS "MONTH"
--year函数
SELECT YEAR(GETDATE()) AS "YEAR"
--Datediff函数
SELECT Datediff(YEAR,GETDATE(),'2000-2-22') AS "Datediff"
--DateADD函数
SELECT GETDATE() AS "现在时间"
SELECT DateADD(MONTH,1,GETDATE()) AS DateADD
如需详解请留言~