一个项目涉及到的50个Sql语句
问题及描述:
--1.学生表
Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别
--2.课程表
Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号
--3.教师表
Teacher(T#,Tname) --T# 教师编号,Tname 教师姓名
--4.成绩表
SC(S#,C#,score) --S# 学生编号,C# 课程编号,score 分数
--创建测试数据
create table Student( Sid varchar(10), Sname varchar(10), Sage datetime, Ssex varchar(10) ); insert into Student values('01' , '赵雷' , '1990-01-01' , '男'); insert into Student values('02' , '钱电' , '1990-12-21' , '男'); insert into Student values('03' , '孙风' , '1990-05-20' , '男'); insert into Student values('04' , '李云' , '1990-08-06' , '男'); insert into Student values('05' , '周梅' , '1991-12-01' , '女'); insert into Student values('06' , '吴兰' , '1992-03-01' , '女'); insert into Student values('07' , '郑竹' , '1989-07-01' , '女'); insert into Student values('08' , '王菊' , '1990-01-20' , '女'); insert into Student values('09' , '孙吴昊' , '1990-01-20' , '女'); insert into Student values('10' , '赵雷' , '1990-01-20' , '女');
create table Course( Cid varchar(10), Cname varchar(10), Tid varchar(10) ); insert into Course values('01' , '语文' , '02'); insert into Course values('02' , '数学' , '01'); insert into Course values('03' , '英语' , '03'); insert into Course values('04' , '英语' , '01');
create table Teacher( Tid varchar(10), Tname varchar(10) ); insert into Teacher values('01' , N'张三'); insert into Teacher values('02' , N'李四'); insert into Teacher values('03' , N'王五'); insert into Teacher values('04' , N'汪二蛋');
create table SC( Sid varchar(10), Cid varchar(10), score decimal(18,1) ); insert into SC values('01' , '01' , 80); insert into SC values('01' , '02' , 90); insert into SC values('01' , '03' , 99); insert into SC values('02' , '01' , 70); insert into SC values('02' , '02' , 60); insert into SC values('02' , '03' , 80); insert into SC values('03' , '01' , 80); insert into SC values('03' , '02' , 80); insert into SC values('03' , '03' , 80); insert into SC values('04' , '01' , 50); insert into SC values('04' , '02' , 30); insert into SC values('04' , '03' , 20); insert into SC values('05' , '01' , 76); insert into SC values('05' , '02' , 87); insert into SC values('06' , '01' , 31); insert into SC values('06' , '03' , 34); insert into SC values('07' , '02' , 89); insert into SC values('07' , '03' , 98); insert into SC values('08' , '03' , 98); insert into SC values('09' , '03' , 98); insert into SC values('10' , '04' , 59);
1、查询平均成绩大于60分的同学的学号和平均成绩;
分组一般结合聚合函数应用
SELECT Sid, AVG(score) AS num_score FROM sc GROUP BY Sid HAVING AVG(score) > 60;
//先得到每个学号和平均分数(应用聚合函数和分组,7个学生),然后在刷选出平均数>60的学生(对分组刷选用having)
// group by后面不能接where,having代替了where
2、查询所有同学的学号、姓名、选课数、总成绩