简单sql语句

1)创建学生档案表:学号,姓名,性别,出生日期,班级,入学日期
2)创建学生成绩表:学号,学科名,成绩,学期,考试日期
3)查出第三学期数学课平均分最高与最低的班级,最高与最低平均分是多少?
4)查出2004年入学的总人数
5)查出第二学期成绩语文课考试分最高的人的信息.
6)列出第四学期各班各科的平均分.
7)查出年龄小于20岁的人数




create table 学生档案表

  学号 varchar(20),
  姓名 varchar(20),
  性别 varchar(10),
  出生日期 datetime,
  班级 varchar(20),
  入学日期 datetime
)

create table 学生成绩表
(
  学号 varchar(20),
  学科名 varchar(20),
  成绩 decimal(12,1),
  学期 int,
  考试日期 datetime
)


--3)查出第三学期数学课平均分最高与最低的班级,最高与最低平均分是多少?
select B.班级
       ,avg(A.成绩) as 平均分
       ,identity(int,1,1) as ID
into #
from 学生成绩表 A
join 学生档案表 B on A.学生档案表=B.学生档案表
where A.学科名='数学' and A.学期=3
group by B.班级

select t.班级
       ,t.平均分
from # t
where 平均分=(select min(平均分) from #)
       or
      平均分=(select max(平均分) from #)

--4)查出2004年入学的总人数
select count(1) from 学生档案表 where year(入学日期)=2004

--5)查出第二学期成绩语文课考试分最高的人的信息
select B.*
       ,A.成绩
from 学生成绩表 A
join 学生档案表 B on A.学生档案表=B.学生档案表
where A.学科名='语文' 
      and A.学期=2
      and not exists(select 1 
                       from 学生成绩表 
                         where 学科名=A.学科名 
                                and 成绩>A.成绩)

--6)列出第四学期各班各科的平均分.
select B.班级
       ,A.学科名
       avg(成绩) as 平均分
from 学生成绩表 A
join 学生档案表 B on A.学生档案表=B.学生档案表
where A.学期=4
group by B.班级,A.学科名

--7)查出年龄小于20岁的人数
select count(1) from 学生档案表 where datediff(year,出生日期,getdate())<20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值