基本sql查询语句练习
Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
select
a.S#
from
(
select
s#,score
from
SC
where
C#=
'001'
) a,(
select
s#,score
from
SC
where
C#=
'002'
) b
where
a.score>b.score
and
a.s#=b.s#;
2、查询平均成绩大于60分的同学的学号和平均成绩;
select
S#,
avg
(score)
from
sc
group
by
S#
having
avg
(score) >60;
3、查询所有同学的学号、姓名、选课数、总成绩;
select
Student.S#,Student.Sname,
count
(SC.C#),
sum
(score)
from
Student
left
Outer
join
SC
on
Student.S#=SC.S#
group
by
Student.S#,Sname
4、查询姓“李”的老师的个数;
select
count
(
distinct
(Tname))
from
Teacher
where
Tname
like
'李%'
;
5、查询没学过“叶平”老师课的同学的学号、姓名;
select
Student.S#,Student.Sname
from
Student
where
S#
not
in
(
select
distinct
( SC.S#)
from
SC,Course,Teacher
where
SC.C#=Course.C#
and
Teacher.T#=Course.T#
and
Teacher.Tname=
'叶平'
);
6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
select
Student.S#,Student.Sname
from
Student,SC
where
Student.S#=SC.S#
and
SC.C#=
'001'
and
exists(
Select
*
from
SC
as
SC_2
where
SC_2.S#=SC.S#
and
SC_2.C#=
'002'
);
7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
select
S#,Sname
from
Student
where
S#
in
(
select
S#
from
SC ,Course ,Teacher
where
SC.C#=Course.C#
and
Teacher.T#=Course.T#
and
Teacher.Tname=
'叶平'
group
by
S#
having
count
(SC.C#)=(
select
count
(C#)
from
Course,Teacher
where
Teacher.T#=Course.T#
and
Tname=
'叶平'
));
8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
Select
S#,Sname
from
(
select
Student.S#,Student.Sname,score ,(
select
score
from
SC SC_2
where
SC_2.S#=Student.S#
and
SC_2.C#=
'002'
) score2
from
Student,SC
where
Student.S#=SC.S#
and
C#=
'001'
) S_2
where
score2 <score;
9、查询所有课程成绩小于60分的同学的学号、姓名;
select
S#,Sname
from
Student
where
S#
not
in
(
select
Student.S#
from
Student,SC
where
S.S#=SC.S#
and
score>60);
10、查询没有学全所有课的同学的学号、姓名;
select
Student.S#,Student.Sname
from
Student,SC
where
Student.S#=SC.S#
group
by
Student.S#,Student.Sname
having
count
(C#) <(
select
count
(C#)
from
Course);
11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
select
S#,Sname
from
Student,SC
where
Student.S#=SC.S#
and
C#
in
select
C#
from
SC
where
S#=
'1001'
;
12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;
select
distinct
SC.S#,Sname
from
Student,SC
where
Student.S#=SC.S#
and
C#
in
(
select
C#
from
SC
where
S#=
'001'
);
13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;
update
SC
set
score=(
select
avg
(SC_2.score)
from
SC SC_2
where
SC_2.C#=SC.C# )
from
Course,Teacher
where
Course.C#=SC.C#
and
Course.T#=Teacher.T#
and
Teacher.Tname=
'叶平'
);
14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;
select
S#
from
SC
where
C#
in
(
select
C#
from
SC
where
S#=
'1002'
)
group
by
S#
having
count
(*)=(
select
count
(*)
from
SC
where
S#=
'1002'
);
15、删除学习“叶平”老师课的SC表记录;
Delect SC
from
course ,Teacher
where
Course.C#=SC.C#
and
Course.T#= Teacher.T#
and
Tname=
'叶平'
;
16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、
号课的平均成绩;
Insert
SC
select
S#,
'002'
,(
Select
avg
(score)
from
SC
where
C#=
'002'
)
from
Student
where
S#
not
in
(
Select
S#
from
SC
where
C#=
'002'
);
17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分
SELECT
S#
as
学生ID
,(
SELECT
score
FROM
SC
WHERE
SC.S#=t.S#
AND
C#=
'004'
)
AS
数据库
,(
SELECT
score
FROM
SC
WHERE
SC.S#=t.S#
AND
C#=
'001'
)
AS
企业管理
,(
SELECT
score
FROM
SC
WHERE
SC.S#=t.S#
AND
C#=
'006'
)
AS
英语
,
COUNT
(*)
AS
有效课程数,
AVG
(t.score)
AS
平均成绩
FROM
SC
AS
t
GROUP
BY
S#
ORDER
BY
avg
(t.score)
18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
SELECT
L.C#
As
课程ID,L.score
AS
最高分,R.score
AS
最低分
FROM
SC L ,SC
AS
R
WHERE
L.C# = R.C#
and
L.score = (
SELECT
MAX
(IL.score)
FROM
SC
AS
IL,Student
AS
IM
WHERE
L.C# = IL.C#
and
IM.S#=IL.S#
GROUP
BY
IL.C#)
AND
R.Score = (
SELECT
MIN
(IR.score)
FROM
SC
AS
IR
WHERE
R.C# = IR.C#
GROUP
BY
IR.C#
);
19、按各科平均成绩从低到高和及格率的百分数从高到低顺序
SELECT
t.C#
AS
课程号,
max
(course.Cname)
AS
课程名,
isnull
(
AVG
(score),0)
AS
平均成绩
,100 *
SUM
(
CASE
WHEN
isnull
(score,0)>=60
THEN
1
ELSE
0
END
)/
COUNT
(*)
AS
及格百分数
FROM
SC T,Course
where
t.C#=course.C#
GROUP
BY
t.C#
ORDER
BY
100 *
SUM
(
CASE
WHEN
isnull
(score,0)>=60
THEN
1
ELSE
0
END
)/
COUNT
(*)
DESC
20、查询如下课程平均成绩和及格率的百分数(用
"1行"
显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)
SELECT
SUM
(
CASE
WHEN
C# =
'001'
THEN
score
ELSE
0
END
)/
SUM
(
CASE
C#
WHEN
'001'
THEN
1
ELSE
0
END
)
AS
企业管理平均分
,100 *
SUM
(
CASE
WHEN
C# =
'001'
AND
score >= 60
THEN
1
ELSE
0
END
)/
SUM
(
CASE
WHEN
C# =
'001'
THEN
1
ELSE
0
END
)
AS
企业管理及格百分数
,
SUM
(
CASE
WHEN
C# =
'002'
THEN
score
ELSE
0
END
)/
SUM
(
CASE
C#
WHEN
'002'
THEN
1
ELSE
0
END
)
AS
马克思平均分
,100 *
SUM
(
CASE
WHEN
C# =
'002'
AND
score >= 60
THEN
1
ELSE
0
END
)/
SUM
(
CASE
WHEN
C# =
'002'
THEN
1
ELSE
0
END
)
AS
马克思及格百分数
,
SUM
(
CASE
WHEN
C# =
'003'
THEN
score
ELSE
0
END
)/
SUM
(
CASE
C#
WHEN
'003'
THEN
1
ELSE
0
END
)
AS
UML平均分
,100 *
SUM
(
CASE
WHEN
C# =
'003'
AND
score >= 60
THEN
1
ELSE
0
END
)/
SUM
(
CASE
WHEN
C# =
'003'
THEN
1
ELSE
0
END
)
AS
UML及格百分数
,
SUM
(
CASE
WHEN
C# =
'004'
THEN
score
ELSE
0
END
)/
SUM
(
CASE
C#
WHEN
'004'
THEN
1
ELSE
0
END
)
AS
数据库平均分
,100 *
SUM
(
CASE
WHEN
C# =
'004'
AND
score >= 60
THEN
1
ELSE
0
END
)/
SUM
(
CASE
WHEN
C# =
'004'
THEN
1
ELSE
0
END
)
AS
数据库及格百分数
FROM
SC
基本sql查询语句练习的更多相关文章
- sql查询语句如何解析成分页查询?
我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...
- 15个初学者必看的基础SQL查询语句
本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插 ...
- SQL查询语句去除重复行
1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录 ...
- WordPress 常用数据库SQL查询语句大全
在使用WordPress的过程中,我们少不了要对数据库进行修改操作,比如,更换域名.修改附件目录.批量修改文章内容等等.这个时候,使用SQL查询语句可以大大简化我们的工作量. 关于如何操作SQL查询语 ...
- (转)经典SQL查询语句大全
(转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...
- 转: 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- 经典SQL查询语句大全
一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...
- oracle中sql查询语句的执行顺序
查询语句的处理过程主要包含3个阶段:编译.执行.提取数据(sql查询语句的处理主要是由用户进程和服务器进程完成的,其他进程辅助配合) 一.编译parse 在进行编译时服务器进程会将sql语句的正文放入 ...
- SQL查询语句分类
SQL查询语句有多种,下面总结下.首先先建三张表用于后面的实验 -- 学生表,记录学生信息 CREATE TABLE student( sno ), sname ), ssex ENUM('男','女 ...
- 浅谈SQL优化入门:1、SQL查询语句的执行顺序
1.SQL查询语句的执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_ ...
随机推荐
- SpringCloud落地实践
这几年微服务架构越来越火.伴随着微服务概念的提示,越来越多的组织为了方便开发,结合实际提供很多微服务机构, 之前工作中一直使用dubbo作为微服务框架, dubbo只是专注于服务之间的通讯,所以更灵活 ...
- java反射——方法
大家都知道反射技术在Java里面时非常重要的一个技术点,因为Java好多框架的编写都是基于反射的,别的不多说,spring框架里面的IOC就是基于反射实现.那么什么是反射呢?JAVA反射机制是在运行状 ...
- 用户登陆状态,ios开发用户登陆
IOS开发之记录用户登陆状态,ios开发用户登陆 上一篇博客中提到了用CoreData来进行数据的持久 化,CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreD ...
- Advanced Bash-Scripting Guide(学习笔记)
http://www.tldp.org/LDP/abs/html/index.html 11.1. Loops tp://www.tldp.org/LDP/abs/html/loops1. ...
- <2014 05 09> 程序员:从C++转到Java需注意的地方
最近想玩玩Android的APP开发,从C++角度来学习Java.Java可以说是一个优化精简版的C++,去除了底层C的很多特性.找了这篇文章. --------------------------- ...
- font-size引起的页面晃动
如下图中的场景,页面分为头和内容两个大块,head高度是50PX,1PX的border,中间的内容是iframe,高度需要每次进行计算,如下 <script>$(function(){ s ...
- 第12章—整合Redis
spring boot 系列学习记录:http://www.cnblogs.com/jinxiaohang/p/8111057.html 码云源码地址:https://gitee.com/jinxia ...
- Java 之内部类
概述 内部类修饰符 内部类的细节 局部内部类 匿名内部类及其应用 匿名内部类细节 内部类概述 将一个类定义在另一个类的里面, 里面的那个类就称为内部类(内置类, 嵌套类). class Outer { ...
- 总结! http post请求 application/x-www-form-urlencoded body体数据获取不到?
首先,简单介绍下Http请求中Content-Type类型 类型格式:type/subtype(;parameter)? type 主类型,任意的字符串,如text,如果是*号代表所有: subtyp ...
- python通过原生sql查询数据库(共享类库)
#!/usr/bin/python # -*- coding: UTF-8 -*- """DB共享类库""" # 使用此类,先实例化一个Da ...