分组,聚合,连接,子查询,组合查询复习
广告投放★自助友情CMS落伍广告联盟晒乐广告联盟脉动广告联盟品味广告联盟
广告位可自定样式联系QQ:4285248个文字广告月20元广告联系QQ:428524广告位可自定样式
8个文字广告月20元黄金广告位每月20元广告位可自定样式联系QQ:428524广告位可自定样式
左旋肉碱、全国包邮
买二送一、无效退款

文章浏览→编程相关Mssql→分组,聚合,连接,子查询,组合查询复习

分组,聚合,连接,子查询,组合查询复习
分组,聚合,连接,子查询,组合查询复习

count函数,用于满足某种条件的行计数
select count(计数规范) from表名
计数规范关键字:
* 计数所有选择的行,包括空值
all列 计数指定列的非空值行,如果没有仅仅是指定列而不带all或者distinct,这是默认操作
distict 计数指定列的所有唯一非空行
--使用count函数对于满足某种条件的行计算
--使用count(*)当某列出现空值的时候,仍会计算
SELECT COUNT(*)员工总数 FROM emp;
--使用count(列名)当某列出现空值的时候,不会计算
SELECT COUNT(sal)有工资的员工 FROM emp;
--过滤掉重复数据
SELECT COUNT(DISTINCT sal)有工资且工资不相同的员工 FROM emp;

常见的聚合函数
count,sum ,avg ,max,min
select 聚合函数(聚合函数规范) from 表
where 条件
group by 列
having 条件
order by desc/asc
sql语句的执行顺序
where->group by->select->having->order  
where条件查询 和group by 字句可以结合在一起使用,先用where对select xx fromxx的结果集进行筛选,
再使用group by对筛选后的结果进行分组
在分组中即出现了group by字句,必须满足2个条件
1。查询的列必须是分组(聚合)函数,例如max,avg...
2。或者查询的列必须是分组列
只想要小数点后一位,可以用substr函数MSSQL中是用substring
--语法
substr ('截取字符串',开始索引,截取字符个数)

--语法 substr('截取字符串',开始索引,截取个数)
SELECT AVG(sal)平均工资 FROM emp;
SELECT substr(AVG(sal),0,6)保留一位小数 FROM emp;
这里用round函数更好
select round(nvl(avg(sal),0),2)s FROM emp;
--group by
SELECT ename 员工姓名,SUM(sal)工资 FROM emp GROUP BY ename;
ename之所以能够作为查询列,是因为分组的条件正是ename
需要注意having和where的用法区别
having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)
where 肯定在group by之前,即也在having之前
where后的条件表达式里不允许使用聚合函数,而having可以

 

未完待续。。。。。。

所属分类:编程相关Mssql    作者:新浪博客    时间:2010-11-20 0:00:00