设为首页 加入收藏

TOP

SQL语言中的基本操作(三)
2017-04-14 10:23:26 】 浏览:544
Tags:SQL 言中 基本操作
m exam;


(7)聚集函数-AVG:AVG函数返回满足where条件的一列的平均值
例如:
求一个班级数学平均分:select avg(math) from exam;
求一个班级总分平均分:select avg(ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0)) from exam;


(8)聚集函数-MAX/MIN:Max/min函数返回满足where条件的一列的最大/最小值。
Select max(列名) from tablename
[WHERE where_definition]
例如:
求班级最高分和最低分:select max(chinese+math+english),min(ifnull(chinese,0)+ifnull(math,0)+ifnull(english,0)) from exam;


(9)GROUP BY子句:使用group by 子句对列进行分组
可以将查询结果按属性列或属性列组合在行的方向上进行分组,每组在属性列或属性列组合上具有相同的值,使用having 子句 对分组结果进行过滤(Having和where均可实现过滤,但在having可以使用聚集函数,having通常跟在group by后,它作用于分组
)。
SELECT column1, column2. column3.. FROM table;
group by column having …
举例如下:
create table orders(
id int,
product varchar(20),
price float
);


insert into orders(id,product,price) values(1,’电视’,900);
insert into orders(id,product,price) values(2,’洗衣机’,100);
insert into orders(id,product,price) values(3,’洗衣粉’,90);
insert into orders(id,product,price) values(4,’桔子’,9);
insert into orders(id,product,price) values(5,’洗衣粉’,90);


对订单表中商品归类后,显示每一类商品的总价(需要按照商品名称进行分组):
select product,sum(price) from orders group by product;
查询购买了几类商品,并且每类总价大于100的商品:select product,sum(price) from orders group by product having sum(price) > 100;
注意:where 和 having 条件语句的区别 ?
where 是在分组前进行条件过滤,having 是在分组后进行条件过滤
使用where地方都可以用having替换,但是having可以使用分组函数,而where后不可以用分组函数。


使用GROUP BY 时,SELECT 子句中只能由以下部分组成:
1,汇总函数
2,GROUP BY 中出现的列名
3, 1和2通过函数和表达式的结果


例如:
SELECT A_ID ,COUNT(*) FROM C GROUP BY A_ID; =>合法
SELECT A_DATE,COUNT(*) FROM C GROUP BY A_ID; =>不合法,按A_ID分组后,对于其他各列的查询只能是汇总查询,否则没有意义


小结 select 语句 : S-F-W-G-H-O 组合 select … from … where … group by… having… order by … ; 它们的顺序不能改变


首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle 10g 数据库与客户端冲突导.. 下一篇MySQL中的多表设计

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目