函数与分组查询数据

系统函数分

聚合函数、数据类型转换函数、日期函数、数学函数 . . .

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 函数与分组查询数据的更多相关文章

  1. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

  2. Sql Server 基础语法

    来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select  ...

  3. sql server中常用方法函数

    SQL SERVER常用函数 1.DATEADD在向指定日期加上一段时间的基础上,返回新的 datetime 值. (1)语法: DATEADD ( datepart , number, date ) ...

  4. SQL Server 内置函数、临时对象、流程控制

    SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...

  5. 【SQL Server】SQL Server基础之存储过程

    SQL Server基础之存储过程  阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...

  6. SQL Server数据库ROW_NUMBER()函数使用详解

    SQL Server数据库ROW_NUMBER()函数使用详解 摘自:http://database.51cto.com/art/201108/283399.htm SQL Server数据库ROW_ ...

  7. SQL Server UDF用户自定义函数

    UDF的定义 和存储过程很相似,用户自定义函数也是一组有序的T-SQL语句,UDF被预先优化和编译并且尅作为一个单元爱进行调用.UDF和存储过程的主要区别在于返回结果的方式. 使用UDF时可传入参数, ...

  8. 10、SQL Server 内置函数、临时对象、流程控制

    SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ...

  9. 深入浅出SQL Server 2008 分区函数和分区表

    原文:深入浅出SQL Server 2008 分区函数和分区表 当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的 ...

随机推荐

  1. Linux vsftpd服务配置具体解释

    [背景] 近日.一朋友dominoserver要进行升级.迁移,搭建了linux測试系统,也开启vsftpd服务,但是配置的ftp账号,程序无法正常下载附件. [问题跟踪] 通过ftpclient连接 ...

  2. GDB调试之暂停

    暂停机制: 有3种方式可以通知GDB暂停程序的执行. a.断点: 通知GDB在程序中的特定位置暂停执行: b.监视点:通知GDB当特定内存位置(或者涉及一个或多个位置的表达式)的值发生变化时暂停执行: ...

  3. 使用超链接跳转页面(GridView)

    1. the html markup <div> <asp:GridView ID=" OnPageIndexChanging="GridView1_PageIn ...

  4. Map 的遍历

    一.Map的遍历 在后面java的开发过程中会遇到Map类的使用,然而map的遍历是一大问题. Map遍历用两种比较交代的方法: package edu.map; import java.util.H ...

  5. 使用R进行相关性分析

    基于R进行相关性分析 一.相关性矩阵计算: [1] 加载数据: >data = read.csv("231-6057_2016-04-05-ZX_WD_2.csv",head ...

  6. 个人自建网店(WordPress WooCommerce on SAE)集成支付宝支付

    插件: Alipay For WooCommerce 到支付宝账户的商家服务提出申请: https://b.alipay.com/order/serviceIndex.htm 在"在线签约- ...

  7. linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦)

    分区表是硬盘的分区信息,要删除一个硬盘的所有分区表很麻烦的,需要fdisk一个一个的删除,其实dd命令可直接清除分区信息,当然,这也是linux给root用户留下的作死方法之一.dd 命令主要参数如下 ...

  8. octopress command memo

    1 rake new_post rake new_post[title]           # Begin a new post in source/_posts 2 rake preview ht ...

  9. bootstrap基础知识

    Bootstrap是Twitter推出的一款简洁.直观.强悍的前端开发框架. Bootstrap基于 HTML.CSS.JAVASCRIPT.它由Twitter的设计师Mark Otto和Jacob ...

  10. wchar_t是内置还是别名(亲测有效:wchar_t在windows下是16位整数的别名,在linux等平台下是32位整数的别名。MSVC2008开始默认是/Zc:wchar_t)

    接前一篇C++ ABI之名字改编(以Qt为例),继续看看C++名字改编相关的问题. 问题 MSVC 有一对选项/Zc:wchar_t- 与 /Zc:wchar_t控制wchar_t 于是 wchar_ ...