SQL

 

hahahha MySQL   SQLSever  
  select name 姓名,
case
when sex=1 then '男'
else '女'
end as '性别'
from employees
select name,sex=
case
when sex=1 then '男'
else '女'
end
from employees
  select employeeid,income-outcome as '实际收入' from salary select employeeid,realincome=income-outcome from salary
  Create table new_table_name (Select * from old_table_name); select employeeid,income into 收入在1500以上员工 from salary where income > 1500
     
     
     
     

 

 

-- 一、创建教学系统的数据库,表,以及数据
--student(sno,sname,sage,ssex) 学生表
--course(cno,cname,tno) 课程表
--sc(sno,cno,score) 成绩表
--teacher(tno,tname) 教师表

--14、查询每门课程被选修的学生数
select cno,count(score)as '选课人数'
from sc
group by cno

--9、查询所有课程成绩小于60分的同学的学号、姓名

select sno,sname from student where sno not in 
(
select distinct sno from sc where score >= 60 )

 

--3、查询所有同学的学号、姓名、选课数、总成绩

select sc.sno,student.sname,count(sc.score) as '选课数',sum(sc.score) as '总成绩'
from sc,student where sc.sno = student.sno
group by sc.sno,student.sname

 

-- -- 6、查询同时学过课程1和课程2的同学的学号、姓名
select a.sno from (select sno,score from sc where cno='1') a,
(select sno,score from sc where cno='2') b
where a.sno=b.sno

select sno,sname from student where sno in
(select sno from sc where sc.cno = '1' ) and sno in
(select sno from sc where sc.cno = '2' )

 

--7、查询学过“叶平”老师所教所有课程的所有同学的学号、姓名

select sno,sname from student where sno in
(
select sno from sc,course where sc.cno = course.cno and course.tno in
(
select tno from teacher where tname = '叶平'

)

 

--38、查询最受欢迎的课程****************
select cno 课程名, count(cno) 选修人数
from sc group by cno
having count(cno) = (select top 1 count(cno) from sc group by cno order by count(cno) desc)

 

-- -- 22、查询每门课程的平均成绩,结果按平均成绩升序排列
select cno,avg(score) from sc
group by cno
order by avg(score)

 -- -- 10、查询没有学全所有课的同学的学号、姓名
select student.sno,student.sname from student,sc where student.sno = sc.sno 
group by student.sno
having count(sc.score) < (select count(*)from course)
 

--37、查询全部学生都选修的课程的课程号和课程名*******
select sc.cno 课程号,cname 课程名 from sc,course
where sc.cno = course.cno
group by sc.cno,cname
having count(sno) = (select count(sname) from student )

 

-- -- 39、查询没学过“叶平”老师讲授的任一门课程的学生姓名
select sname from student where sno not in
(
select sno from sc where cno in
(
select cno from course where tno in
(
select tno from teacher where tname = '叶平'
)
)
)

select sname from student
where sno not in
(
select sno from sc,course,teacher
where sc.cno = course.cno and course.tno = teacher.tno and teacher.tname='叶平'
)

 


--32、查询不同课程成绩相同的学生的学号、课程号、学生成绩**********
select sc.sno,sc.cno,sc.score from sc,
(select sc.sno,sc.cno,sc.score from sc)r
where r.score=sc.score and r.cno<>sc.cno

 

--33、查询每门课程成绩最好的前两名的学生ID******************
select * from sc a
where score in
(select top 2 score from sc where a.cno = sc.cno order by sc.score desc)
order by a.cno,a.score desc

--34、查询各单科状元
select* from sc a
where score = ( select top 1 score from sc where a.cno = sc.cno order by sc.score desc)
order by a.cno,a.score desc

--20、查询同名同姓学生名单,并统计同名人数 ********************
select sname,count(sno)
from student
group by sname having count(sno) > 1

--14、查询和2号同学学习的课程完全相同的其他同学学号和姓名

select b.sno, b.sname
from sc a, student b
where b.sno <> 2 and a.sno = b.sno
group by b.sno, b.sname
having sum(cno) = (select sum(cno) from sc where sno = 2) and
count(cno) = (select count(cno) from sc where sno = 2)

 

--19、按各科平均成绩从低到高和及格率的百分数从高到低顺序

SELECT t.cno AS 课程号,
max(course.cname) AS 课程名,
isnull(AVG(score),0) AS 平均成绩,
100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/count(1) AS 及格率
FROM sc t, course
where t.cno = course.cno
GROUP BY t.cno
ORDER BY 及格率 desc

 

--24、查询学生平均分及其名次

select
(select count(1)
from (select distinct avg(score) as pjf from sc group by sno) as t2
where pjf >= t1.pjf) as 名次,
sno as 学号,
pjf as 平均分
from (select sno, avg(score) as pjf from sc group by sno) as t1

     

posted on 2017-10-07 13:58  幼儿猿  阅读(114)  评论(0)    收藏  举报

导航