SQL Server 基础 04 函数与分组查询数据
函数与分组查询数据
系统函数分
聚合函数、数据类型转换函数、日期函数、数学函数 . . .
1、 聚合函数
主要是对一组值进行计算,然后返回一个值。 聚合函数包括 sum(求和)、avg(求平均值)、min()、max()、count(求数量)
sum函数语法 : sum(列明)
select sum(sno) as 序号和 from stu_info
avg
select avg(sno) as 序号平均值 from stu_info
. . .
count 用来一组值的个数,统计
select count(sno) as 个数 from stu_info
2、类型转换函数
将日期和数字转换成字符串格式, ... 用到 convert() 、cast()
convert 适合用于日期的转换,cast适合用于一般数据类型的转换。。。
convert 的语法格式 : convert ( datatype [ (length) , expression , [style] ] )
datatype 如果要转换成 char、archar 、binary 、arbinary 数据类型,还需要设置数据类型长度
expression : 表达式,进行数据类型转换的值或者列名
style : 用于日期格式的设置

-- 类型转换
--语法convert(datatype[(length),expression,[style]])
select convert(char,getdate())
select sname,convert(char,date,103) as 出生日期 from stu_info
cast : 语法格式 : cast (expression as datatype [ (length) ] )
select sname,cast(date as char(10)) as 生日 from stu_info
3、日期函数
getdate、dateadd、datediff、datename、datepart、
4、数学函数
5、字符函数
6、其它几个系统函数
文本和图形函数、配置函数、游标函数、元数据函数、安全函数、常用的系统函数--(isnull)
分组查询
数据分组是指将数据表按照某种值分为很多组。例如,性别里分男女,会得到两组。
数据分组使用 group by , 如果把满足某种条件的的分组查询出来,还需要 having 子句配合
/**/前面说需要distinct关键字 去除重复值,会影响效率,为此以后使用 group by 。
1、按列分组
-- 将表内容按列分组
select depart from stu_info group by depart
/***/ 如果使用*通配符 就会出错,应当列出所有表的字段名,按 group by 后面的字段分组
2、聚合函数与分组配合使用
select sex,count(*) as 人数 from dbo.stu_info group by sex
/**/ 由于句中含有 group by 子句 , 所以count(*) 统计的是每组的记录个数,而并非是所有记录的个数
-- where 子句先于 group by
select depart,count(*) as 女生人数 from stu_info where sex='女'
group by depart
3、查询数据直方图 , 关键字 : replicate
select depart,replicate('=',count(*)*5) as 人数对比图 from dbo.stu_info group by depart
/**/ 该函数的作用是以指定的次数重复字符表达式 ,这里以 5 倍为次数 , 重复了符号 ( = )
4、排序分组结果 order by 语句永远放在最后
select depart ,count(*) from dbo.stu_info group by depart order by count(*) desc
/**/ 先分组,然后按组值数量进行排序 . . .
5、反转查询结果 关键字 : case when
select depart,
count(case when sex='男' then 1 else null end) as 男生人数
,count(case when sex='女' then 1 else null end) as 女生人数
from dbo.stu_info group by depart
6、使用 having 子句设置分组查询条件
select depart ,count(*) as 人数 from stu_info group by depart
having depart in ('软件系','网页')
order by count(*)
-- 不过这里也可以使用where代替having
/**/ having 与 where 的异同
having 子句用于筛选组,where 子句用于筛选记录
having 子句可以使用聚合函数,where不能
having 子句中不能出现既不被group by 子句包含,又不能聚合含的字段。而where含可以出现任意字段
having 配合 group by 子句使用 , 而 where 不能配合任何子句使用
SQL Server 基础 04 函数与分组查询数据的更多相关文章
- SQL server基础知识(表操作、数据约束、多表链接查询)
SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...
- Sql Server 基础语法
来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select ...
- sql server中常用方法函数
SQL SERVER常用函数 1.DATEADD在向指定日期加上一段时间的基础上,返回新的 datetime 值. (1)语法: DATEADD ( datepart , number, date ) ...
- SQL Server 内置函数、临时对象、流程控制
SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...
- 【SQL Server】SQL Server基础之存储过程
SQL Server基础之存储过程 阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...
- SQL Server数据库ROW_NUMBER()函数使用详解
SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_ ...
- SQL Server UDF用户自定义函数
UDF的定义 和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且尅作为一个单元爱进行调用.UDF和存储过程的主要区别在于返回结果的方式. 使用UDF时可传入参数, ...
- 10、SQL Server 内置函数、临时对象、流程控制
SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...
- 深入浅出SQL Server 2008 分区函数和分区表
原文:深入浅出SQL Server 2008 分区函数和分区表 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的 ...
随机推荐
- android 支持分组和联系人展示的一个小样例
先看效果图: 要实现这个效果,activity必须实现ExpandableListActivity @Override public void onCreate(Bundle savedInstanc ...
- 08.net网站开发(前端):5.jQuery
开发网站肯定要会JS,嫌代码太难看难学那至少要学会jQuery.当然我见过有些项目纯用服务端控件也是能做出来的,但我相信,那些碰到复杂的需求的话肯定很棘手的.jQuery是对JS和DOM的封装,少量代 ...
- [html5] canvas 绘图:八卦图
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title&g ...
- BZOJ 1880: [Sdoi2009]Elaxia的路线( 最短路 + dp )
找出同时在他们最短路上的边(dijkstra + dfs), 组成新图, 新图DAG的最长路就是答案...因为两人走同一条路但是不同方向也可以, 所以要把一种一个的s,t换一下再更新一次答案 ---- ...
- ThinkPHP第五天(提交类型判定常量IS_POST等,错误页面种类,Model实例化方式,模板中使用函数,foreach循环,模板中.语法配置)
1.IS_GET.IS_POST.IS_PUT.IS_DELETE.IS_AJAX常量,方便快捷实现各个判断. 在Action类中还可以使用$this->isPost()等进行判断. 2.错误页 ...
- openstack、kvm CentOS升级内核
openstack平台需要使用各种Linux发行版镜像,其制作方法主要有两种,要么是基于各大Linux发行版ISO光盘手动制作,要么是使用官方提供的制作好镜像进行修改 问题 FATAL: Module ...
- MYSql和PHP计算数据性能
MYSQL不是有很多内部计算函数吗? 比如我要计算一列数据的平均值,,那我是直接用MYSQL里面的函数在SQL语句中计算 快 :还是用SQL把数据取出来了,用PHP计算快呢?(SQL语句PHP语句都用 ...
- QT 程序自定义插件
1,定义接口文件 /****************************************************************************************** ...
- Python网络编程——处理套接字错误
在网络应用中,经常会遇到这种情况:一方尝试连接,但另一方由于网络媒介失效或者其他原因无法响应. Python的Socket库提供了一个方法,能通过socket.error异常优雅地处理套接字错误. 1 ...
- nginx启动
查看nginx的进程 ps -ef | grep nginx 重启nginx的3种办法1.service nginx restart2.改了配置文件让其生效办法 nginx -s reload3.到n ...