聚合分析是指对数据表中的一列或多列所进行的统计分析
1、统计计数函数---COUNT( ),调用方式可归结为三种:
COUNT(*)
SELECT COUNT(*) AS 当前表的总行数
FROM STUDENT5
COUNT(ALLCOLUMN)
SELECT COUNT(S_AVGRADE) AS 参加考试的人数
FROM STUDENT5
COUNT(DISTINCTCOLUMN)
SELECT COUNT(DISTINCT S_DEPT) AS 不同系别的个数
FROM STUDENT5
2、求和函数---SUM( )
SELECT SUM(S_AVGRADE) AS 所有平均成绩总和,SUM(DISTINCTS_AVGRADE) AS 非重复平均成绩的总和 FROM STUDENT5
说明:查询 sum(某一个字段) as 起个名字 从 哪个表
3、均值函数---AVG( )
SELECTAVG(S_AVGRADE) FROM STUDENT5 WHERE S_SEX =‘女’
SELECTAVG(DISTINCT S_AVGRADE) FROM STUDENT5
4、最大/最小函数---MAX()/MIN( )
函数MAX( )和MIN( )分别用于求组中列COLUMN的最大值,最小值.
SELECT MAX(S_AVGRADE) AS 平均成绩的最大值,MIN(S_AVGRADE) AS 平均成绩的最小值
FROM STUDENT5
select LEFT(t_name,1) as 姓氏 from teacher 说明:就是查询教师表中某字段里面左侧最开始的一个字符。其它字符串函数用法类似
第二个示例:下面字符串练习的写法:
select charindex(‘be‘,‘aabecdefbeghi‘) 注意:字符串函数在练习的时候需要加上单引号
函数格式 | 功能描述 | 举例 |
ascii(character_expression) | 返回字符串表达式中的第一个字符的ascii值(int型) | select ascii(‘bca’)返回98 |
char(integer_expression) | 将ascii值转换为相应的字符,并返回该字符 | select char(65)返回‘a’, char(97)返回‘a’ |
charindex(expression1, expression2[srart_location]) | 返回字符串中指定表达式的开始位置。如果指定srart_location,则表示从位置start_location 开始查找的字符串以返回其开始位置。如果没有匹配则返回0 | charindex(‘be’,aabecdefbeghi) 返回3,be在后面字符串中的第几个 charindex(‘be’,’aabecdefbeghi’,4)返回9 |
left(character_expression ,integer_expression) | 返回字符串character_exre ssion 中从做边开始的in teger_expression个字符 | left(‘abcdef’,3)返回‘abc’ |
len(string_expression)左 right右 | 返回指定字符串表达式的字符(而不是字节)个数 其中不包含尾随空格 | len(‘a bcdefg’)返回8 |
lower(character-_ express ion) | 将大写字符串数据转换为小写字符串数据后返回字符串表达式 | lower(‘abcdefg’)返回‘abcdefg’ |
ltrim(character_expression) | 返回删除起始空格之后的字符串表达式 | ltrim(‘ abcdef’)返回‘abcdef’ |
nchar(integer_expression) | 根据unicode标准的定义,返回具有指定的证书代码的unicode | nchar(197)返回’a’ |
patindex(‘%pattern%’,ex pression) | 返回指定表达式中某模式第一次出现的其实位置。如果在全部有效的文本和字符串数据类型中没有找大该模式,则返回零。可以使用通配符 | patindex(‘%defg%’,‘abcdefghidefg’)返回4 |
quotename(‘character_str ing’[,’quote_character’]) | 返回带有分隔符的unicode字符串 | quotename(‘abcdef’,’’’’返回‘abcdef’,) quotename(‘abcdef’,’(’)返回‘(abcdef)’ |
replace(str_expression1, str_exppression2, str_expression3) | 用第三个表达式str_expression3替换第一个字符串表达式str_expression1中出现的所有第二个指定字符串表达式str_expression2的匹配项,并返回替换后的字符串表达式 | replace(‘abcdefghicde’,’cd’,’china’)返回‘abchinaefghichinae’ |
reverse(character_expression) | 将字符串表达式中的字符首尾翻转,然后返回反转后的字符串 | reverse(‘abcdefg’)返回‘gfedcba’ |
richt(character_expression, integer_expression) | 返回字符串character_expression中从右边开始的inerger_expression 个字符 | right(‘abcdef’,3)返回‘def’ |
rtrim(character_expression) | 返回删除尾随空格之后的字符串表达式 | rtrim(“ bcdef “)返回‘abcdef’ |
space(integer_expression) | 返回由integer_expression 个空格组成的字符 | ‘a’+space(4)+’b’返回‘a b’ |
str(float_expression[,length [,]]) | 返回由数字数据转换来的字符串数据 | str(123.4588,10,4)返回‘123.4588’ |
stuff(character_expression,start, length,character_expression) | 在字符串character_expression中从位置start开始删除start,length个字符,然后又从该位置插入字符串character_expression,最后返回处理后的字符串 | stuff(‘abcdefgh’,2,3,’xyz’)返回‘axyzefgh’ |
substring(expression,start ,length) | 返回给定字符expression中的一个子串,该子串是从位置start开始,长度为length的字符串 | substring(“abcdef’,2,4)返回‘bcde’ |
unicode(ncharacter_expres sion,) | 按照unicode标准的定义,返回输入表达式的第一个字符的整数值 | unicode(n‘akergatan24’) 返回197 |
upper(character_expression) | 返回小写字符串数据转换为大写的字符串表达式 | upper(‘abcdefg‘)返回’abcefg‘ |
获取当前日期时间---GETDATE( )
SQL语句:
SELECT GETDATE( )AS 当前日期和时间
DATEADD() 函数
用法:DATEADD() 函数在日期中添加或减去指定的时间间隔。
DATEADD(datepart,number,date)
datepart 参数可以是下列的值:
datepart | 缩写 |
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年中的日 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小时 | hh |
分钟 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
纳秒 | ns |
示例:
select DATEADD(DD,3,‘2015-2-5‘)
最后结果:
2015-02-08 00:00:00.000
DATEPART() 函数
用于提取一个日期/时间的单独部分,比如年、月、日、小时、分钟等等
示例:
select DATEPART(yyyy,‘2015-2-5‘)
第一个参数同上面表一样。
我们在看一个示例:
我们先学三个关键字:DECLARE 在SQlserver中表示定义一个变量,相当于说定义一个空盒子。以后我就可以往空盒子中装东西。SET:表示给变量赋上一值。类似于给盒子装上东西
最后一个关键词是PRINT 表示直接输出结果出来
案例:提取日期并输出日期 不要复制代码。自己动手写一下。
DECLARE @DTDATETIME;
DECLARE @YYNINT,@QQN INT,@MMN INT,@DYN INT,@DDN INT,@WKN INT,@DWN INT,@HHN INT,@MININT,@SSN INT,@MSN INT,@MCSN INT,@NAN INT;
SET @DT=GETDATE( ); --获取当前日期,时间
SET@YYN=DATEPART (YY, @DT); --提取年份
SET@MMN=DATEPART (MM,@DT); --提取月份
SET@DDN=DATEPART (DD,@DT); --提取日
SET@QQN=DATEPART (QQ,@DT); --提取季度
SET@DYN=DATEPART (DY,@DT); --提取当日在本年度中的天数
SET@WKN=DATEPART (WK,@DT); --提取周数
SET @DWN=DATEPART(DW,@DT); --提取当前星期中的第几天
SET@HHN=DATEPART (HH,@DT); --提取小时数
SET@MIN=DATEPART (MI,@DT); --提取分数
SET@SSN=DATEPART (SS,@DT); --提取秒数
SET@MSN=DATEPART (MS,@DT); --提取毫秒数
SET@MCSN=DATEPART (MCS,@DT); --提取微秒数
SET @NSN=DATEPART(NS,@DT); --提取纳秒数
PRINT ‘年份:’+LTRIM(STR (@YYN));
PRINT ‘月份:’+LTRIM(STR (@MMN));
PRINT ‘日:’+LTRIM(STR (@DDN));
PRINT ‘季度:’+LTRIM(STR (@QQN));
PRINT ‘当前日在年中的第几天:’+LTRIM(STR(@DYN) );
PRINT ‘当前周在年中的第几几周:’+LTRIM(STR(@WKN) );
PRINT ‘当前日在星期中的第几天:’+LTRIM(STR(@DWN) );
PRINT ‘小时数:’+LTRIM(STR(@HHN) );
PRINT ‘分数:’+LTRIM(STR (@MIN));
PRINT ‘秒数:’+LTRIM(STR (@SSN));
PRINT ‘毫秒数:’+LTRIM(STR(@MSN) );
PRINT ‘微秒数:’+LTRIM(STR(@MCSN) );
PRINT ‘纳秒数:’+LTRIM(STR(@NSN) );
本文出自 “读书屋” 博客,请务必保留此出处http://jiefei.blog.51cto.com/6994042/1611915
原文地址:http://jiefei.blog.51cto.com/6994042/1611915