限制查询结果的数量及分组聚合查询

1、限制查询结果的数量
使用Limit子句来限制Select语句返回的行数,Limit后接起始位置,特别注意的地方是第一条记录的起始位置是0。
语法格式:select 字段名1,字段名2 from 表名 Limit 起始位置,显示行数;
或者select 字段名1,字段名2 from 表名 Limit 行数 OFFSET 起始位置;

例子:查询成绩排名第3至第5的学生学号、课程号和成绩;
方法一:
select studentNo,courseNo,score from tb_score order by score Desc Limit 2,3;
方法二:
select studentNo,courseNo,score from tb_score order by score Desc Limit 3
OFFSET 2;

2、分组聚合查询
分组聚合查询:在Select语句中使用Group by子句对数据进行分组运算,Group by对查询结果按字段列进行分组,字段值相等的记录分为一组,用于分组的字段列表可以是一列,也可以是多个列,字段之间用逗号分隔,having条件语句对分组结果进行过滤,子句Group by的使用必须注意一下几点:
Group by子句中每个字段必须是检索列或有效的表达式,但不能是聚合函数,Select语句中使用表达式,必须在group by子句中制定相同的表达式,不能使用别名;
除聚合函数之外,Select子句中的每个列都必须在group by子句中给出;
分组的列中含有NULL值,则NULL将作为一个单独的分组返回,如果该列中存在多个NULL值,则将这些NULL值所在的行分为一组。
语法格式:
select 字段列表,聚合函数(字段名) from 表名 group by 字段列表 having 条件;

例子1:查询各个课程号及相应的选课人数;
Select courseNo,Count(studentNo) from tb_score group by courseNo;
例子2:查询每个学生的选课门数、平均分和最高分;
Select studentNo,count() as 选课门数,avg(score) 平均分,max(score) 最高分 from tb_score group by studentNo;
例子3:查询平均分在80分以上的每个同学的选课门数、平均分和最高分;
Select studentNo,count(
) 选课门数,avg(score) 平均分,max(score) 最高分 from tb_score group by studentNo having avg(score)>=80;
例子4:查询所有学生选课的平均成绩,但只有当平均成绩大于80的情况下才输出;
Select avg(score) 平均分 from tb_score having avg(score)>=80;
例子5:查询有2门以上(含2门)课程成绩大于88分的学生学号及(88分以上的)课程 数;
Select studentNo,count() 课程数 from tb_score where score>88 group by studentNo having count()>=2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡陌熙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值