当前位置:Gxlcms > mysql > 我们分组玩的游戏还记得吗_MySQL

我们分组玩的游戏还记得吗_MySQL

时间:2021-07-01 10:21:17 帮助过:42人阅读

use Myschool

--------------------上机练习1-------------------

--查询每个年级的总学时数,并按照升序排列

select gradeid as 年级,sum(Classhour)

from subject

group by gradeid

order by SUM(Classhour)

--查询每个参加考试的学员的平均分

select studentno as 学号,AVG(studentresult)

from result

group by studentno

select * from subject

--查询每门课程的平均分,并按照将序排列

select subjectid as 课程,AVG(studentresult)

from result

group by subjectid

order by AVG(studentresult) desc

--查询每个学生参加的所有考试的总分,并按照降序排列

select studentno as 学号,SUM(studentresult)

from result

group by studentno

order by SUM(studentresult) desc

---------上机练习2------------------

--查询每学期学时超过50的课程数

use myschool

select gradeid as 年级,COUNT(subjectid) as 课程数

from subject

where classhour>50

group by gradeid

--查询课程表的所有信息

select * from subject

--查询每学期学生的平均年龄

select * from student

select gradeid as 年级,AVG(DATEDIFF(yy,birthday,getdate()))as 平均年龄

from student

group by gradeid

--查询北京地区的每学期学生人数

select gradeid as 年级,COUNT(1) as 人数

from student

where address like('%北京%')

group by gradeid

--查询参加考试的学生中,平均分及格的学生记录,并按照成绩降序排列

select studentno,AVG(StudentResult) as 平均分

from Result

group by StudentNo

having AVG(StudentResult)>=60

order by 平均分 desc

--查询成绩表中的所有信息

select * from result

--查询开始日期为2014年2月22日的课程的及格平均分

select subjectid,AVG(studentresult) as 平均分

from Result

where ExamDate>='2014-2-22' and ExamDate<'2014-2-23'

group by SubjectId

having AVG(StudentResult)>=60

--统计至少有一次不及格的学生学号和次数。

select studentno,COUNT(1) as 次数

from Result

where StudentResult<60

group by StudentNo

注意: (1)where之后不能跟聚合函数

(2) having是对分组后的数据进行第二次筛选或者过滤,也就是说没有group by就没having

(3)如果语句中有group by关键字,那么select后只能跟group by后出现的列,或者是聚合函数

SQL语句的书写顺序: 执行顺序:

select 列名或聚合函数 (4)投影结果

from 表名 (1)定位到表

where 条件 (2)分组前的第一道过滤

group by 列名 (3)分组

having 聚合函数或者分组后的列名(5)分组后的第二道过滤

order by(6)最后排序

人气教程排行