mysql—查询order by、group by、 聚集函数、any/all

目录

一.基本格式

二.示例

1.order by子句

2.聚集函数

 3.group by 子句

4.带有any(some)或all谓词的子查询


一.基本格式

select 要查的内容
from 查找的对象
where 查找的条件
group by 按什么分组
 having 使用到函数的条件
order by 按照什么条件排序

注:1.having只能用到group by子句中。

2.group by 只能用于最外层查询,不能用在任何子查询中。

3.优先级:where>聚合函数>having。

4.where是对表的数据进行筛选过滤

   having 是对聚合函数生成的二维表进行筛选过滤。

5.<> 是不等号

6.聚集函数只能用于 select 子句、group by 中的 having 子句。

   不能用于 where 子句。

二.示例

1.order by子句

// 按照什么条件进行什么排序

①查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列

 select *
 from Student
 order by Sdept ASC,Sage DESC

2.聚集函数

//只能用于 select 子句、group by 中的 having 子句。

   不能用于 where 子句。

函数名 作用 count(*)   统计元组个数 count([distinct|all] <列名>) 统计一列中值的个数 sum([distinct|all] <列名>)  计算一列值的总和,列值必须是数值型 avg([distinct|all] <列名>)   计算一列值的平均值,列值必须是数值型 max([distinct|all] <列名>)     求一列值中的最大值 min([distinct|all] <列名>)   求一列值中的最小值

注:1.distinct计算时去除重复值,all计算时不去除重复值,默认为all。

        2.当聚集函数遇到空值时,除count(*)外,都跳过空值而只处理非空值。

        3.聚集函数只能用于select子句和group by中的having子句。

②查询选修了课程的学生人数//distinct 去重

 select count(distinct Sno)
 from Sc;

 3.group by 子句

③查询选修了三门以上课程的学生学号。

 select Sno
 from Sc
 group by Sno
 having count(*) > 3;

④查询平均成绩大于60分的学生学号和平均成绩。

select sno,avg(score) s_avg
from Score
group by sno
having avg(score) > 60

注:select sno,avg(score) s_avg  其中s_avg是对avg(score)的命名。

4.带有any(some)或all谓词的子查询

//        子查询返回多个值时要用any或all谓词修饰符,并且必须同时使用比较运算符。谓词any的意思是结果中的某个值,all的意思是结果中的所有值。

>ANY   :  大于子查询结果中的某个值

>ALL    :  大于子查询结果中的所有值

=ANY   :   等于子查询结果中的某个值

⑤查询非计算机科学系中比计算机科学系所有学生年龄都小的学生姓名及年龄。

 select Sname,Sage
 from Student
 where Sage < all
     (select Sage
     from Student
     where Sdept = 'CS')
 and Sdept <> 'CS';

注:Sdept <> 'CS'    意为 Sdept不是CS。 <>  和 != 是不等号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值