Python/ MySQL练习题(一)

查询“生物”课程比“物理”课程成绩高的所有学生的学号

 SELECT
*
FROM
(
SELECT
*
FROM
course
LEFT JOIN score ON score.course_id = course.cid
WHERE
course.cname = '生物'
) AS A
INNER JOIN (
SELECT
*
FROM
course
LEFT JOIN score ON score.course_id = course.cid
WHERE
course.cname = '物理'
) AS B ON A.student_id = B.student_id
WHERE
A.num > B.num

查询平均成绩大于60分的同学的学号和平均成绩

 SELECT
B.student_id,
student.sname,
B.cc
FROM
(
SELECT
student_id,
num,
avg(num) AS cc
FROM
score
GROUP BY
student_id
HAVING
avg(num) > 60
) AS B
LEFT JOIN student ON B.student_id = student.sid

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

 SELECT
student_id,
student.sname,
count(score.course_id)as cc,
sum(num)as cj
FROM
student
LEFT JOIN score ON score.student_id = student.sid
GROUP BY
score.student_id

查询姓“李”的老师的个数

 SELECT * from teacher where tname like '李%'

查询没学过“李平”老师课的同学的学号、姓名

 SELECT student.sid,student.sname from student where sid not in
(SELECT
student_id
FROM
score
WHERE course_id IN
(
SELECT
course.cid
FROM
course
LEFT JOIN teacher ON teacher.tid = course.teacher_id
WHERE
tname = '李平老师'
) GROUP BY student_id)

查询学过“001”并且也学过编号“002”课程的同学的学号、姓名

 select A.student_id,B.sname FROM (SELECT score.student_id,student.sname,course_id
from score LEFT JOIN student on student.sid=score.student_id where score.course_id='')as A
LEFT JOIN(SELECT score.student_id,student.sname,course_id
from score LEFT JOIN student on student.sid=score.student_id where score.course_id='')as B
on A.student_id=B.student_id
where A.course_id=1 and B.course_id=2;

 查询学过“李平”老师所教的所有课的同学的学号、姓名

 SELECT
student.sid,
student.sname
FROM
student
WHERE
student.sid NOT IN (
SELECT
student.sname
FROM
student
WHERE
student.sid IN (
SELECT
course.cid
FROM
course
LEFT JOIN teacher ON teacher.tid = course.teacher_id
WHERE
teacher.tname = '李平老师'
)
)

查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名

 SELECT
student.sid,
student.sname
FROM
(
SELECT
*
FROM
score
WHERE
score.course_id = ''
) AS A
LEFT JOIN (
SELECT
*
FROM
score
WHERE
score.course_id = ''
) AS B ON A.student_id = B.student_id
LEFT JOIN student ON student.sid = B.student_id
WHERE
A.num < B.num

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

 SELECT
student.sid,
student.sname
FROM
score
LEFT JOIN course ON course.cid = score.course_id
LEFT JOIN student ON student.sid = score.student_id
WHERE
score.num < 60
GROUP BY
student_id

查询没有学全所有课的同学的学号、姓名

 SELECT
student.sid,
student.sname
FROM
student
WHERE
student.sid NOT IN (
SELECT
student.sid
FROM
score
LEFT JOIN course ON course.cid = score.course_id
LEFT JOIN student ON student.sid = score.student_id
GROUP BY
score.student_id
HAVING
count(course_id) = (SELECT COUNT(cid) FROM course)
)

查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名

   SELECT
*
FROM
score
LEFT JOIN student on score.student_id = student.sid
LEFT JOIN course ON course.cid = score.course_id
WHERE student_id != 1 AND
score.course_id in (
SELECT
course_id
FROM
score
WHERE
student_id = 1
)
GROUP BY student_id

查询至少学过学号为“001”同学所选课程中任意一门课的其他同学学号和姓名

 SELECT student_id from score where student_id!=1 and course_id IN
(select course_id from score where student_id =1 GROUP BY course_id)
GROUP BY student_id

查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名

 SELECT
student_id,
sname
FROM
score
LEFT JOIN student ON score.student_id = student.sid
WHERE
student_id IN (
SELECT
student_id
FROM
score
WHERE
student_id != 1
GROUP BY
student_id
HAVING
count(course_id) = (
SELECT
count(1)
FROM
score
WHERE
student_id = 1
)
)
AND course_id IN (
SELECT
course_id
FROM
score
WHERE
student_id = 1
)
GROUP BY
student_id
HAVING
count(course_id) = (
SELECT
count(1)
FROM
score
WHERE
student_id = 1
)

删除学习“李平”老师课的SC表记录

  DELETE FROM score where score.course_id IN
(SELECT course_id from course LEFT JOIN teacher on teacher.tid=course.teacher_id
LEFT JOIN score on score.course_id=course.cid
LEFT JOIN student on score.student_id=student.sid
WHERE teacher.tname='李平老师'
GROUP BY course_id;)

向SC表中插入一些记录,这些记录要求符合以下条件:

①没有上过编号“002”课程的同学学号;②插入“002”号课程的平均成绩

 insert into score (student_id,course_id,num)SELECT student_id,1,FLOOR(avg(num))
(SELECT student_id from score where course_id !=2
SELECT FLOOR(avg(num))from score where course_id = 2)

按平均成绩从低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示:

学生ID,语文,数学,英语,有效课程数,有效平均分

     select sc.student_id,
(select num from score left join course on score.course_id = course.cid where course.cname = "生物" and score.student_id=sc.student_id) as sy,
(select num from score left join course on score.course_id = course.cid where course.cname = "物理" and score.student_id=sc.student_id) as wl,
(select num from score left join course on score.course_id = course.cid where course.cname = "体育" and score.student_id=sc.student_id) as ty,
count(sc.course_id),
avg(sc.num)
from score as sc
group by student_id desc

查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

 select student_id,MAX(num),MIN(num) from score GROUP BY course_id

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

 SELECT
course_id,
avg(num) AS nn,
sum(
CASE
WHEN num < 60 THEN
0
ELSE
1
END
),
SUM(1),
sum(
CASE
WHEN num < 60 THEN
0
ELSE
1
END
) / SUM(1) AS pj
FROM
score
GROUP BY
course_id
ORDER BY
avg(num) DESC

课程平均分从高到低显示(现实任课老师)

 SELECT score.course_id,course.cname,avg(num),teacher.tname from score LEFT JOIN course on course.cid=score.course_id
LEFT JOIN teacher on teacher.tid=course.teacher_id
GROUP BY course_id HAVING avg(num)
ORDER BY avg(num) DESC

Python/ MySQL练习题(一)的更多相关文章

  1. python/MySQL练习题(二)

    python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...

  2. python 全栈开发,Day65(MySQL练习题,参考答案)

    一.MySQL练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号.ps:针对的是自己的生物成绩比物理成绩高,再 ...

  3. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  4. python 之路,Day11(上) - python mysql and ORM

    python 之路,Day11 - python mysql and ORM   本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 ...

  5. MySQL练习题

    MySQL练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 3.查询平均成绩大于60分的同学的学号和平均成 ...

  6. MySQL练习题参考答案

    MySQL练习题参考答案 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 思路: 获取所有有生物课程的人(学号,成绩) - 临时表 获取所有有物理课程的人(学号,成绩) - 临时表 根据[ ...

  7. Python—>Mysql—>Dbvisualizer

    MySQLdb: https://pypi.python.org/pypi/MySQL-python/1.2.4 import MySQLdb 1.Download Connector/Python: ...

  8. python入门练习题1

    常见python入门练习题 1.执行python脚本的两种方法 第一种:给python脚本一个可执行的权限,进入到当前存放python程序的目录,给一个x可执行权限,如:有一个homework.py文 ...

  9. Python Mysql 篇

    Python 操作 Mysql 模块的安装 linux: yum install MySQL-python window: http://files.cnblogs.com/files/wupeiqi ...

随机推荐

  1. Java日志框架:slf4j作用及其实现原理

    简单回顾门面模式 slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式, 门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用.用一 ...

  2. CentOS7安装Postgresql

    执行命令 Yum install postgresql-server Yum install postgresql-contrib 安装完成后,检查postgresql的服务状态 Systemctl ...

  3. AsyncTask源码笔记

    AsyncTask源码笔记 AsyncTask在注释中建议只用来做短时间的异步操作,也就是只有几秒的操作:如果是长时间的操作,建议还是使用java.util.concurrent包中的工具类,例如Ex ...

  4. sublime安装、注册、插件

    1. sublime下载:http://www.sublimetext.com/3 2. 输入注册码: help->Enter License —– BEGIN LICENSE —– Antho ...

  5. Day3---------Linux操作系统

    ---恢复内容开始--- 网络基础和DOS命令 一.网络分类 1.地理位置 1).局域网(LAN) 2).城域网(MAN) 3).广域网(WAN) 2.传输介质 1).有线网 2).光纤网 3).无线 ...

  6. [poj2002]Squares_hash

    Squares poj-2002 题目大意:在笛卡尔坐标系中给出n个点,求这些点可以构成多少个正方形. 注释:$1\le n\le 10^3$,$-2\cdot 10^3\le x , y\le 2\ ...

  7. linux scp 命令

    scp 命令 scp 命令 意思是 secure copy 即安全拷贝,可以把它看做是 cp 命令的高级版,可以跨主机拷贝. 经常用来在局域网内不同主机之间分享文件,或者在本机与远程主机中分享文件. ...

  8. Beta冲刺链接总汇

    Beta冲刺 咸鱼 Beta 冲刺day1 Beta 冲刺day2 Beta 冲刺day3 Beta 冲刺day4 Beta 冲刺day5 Beta 冲刺day6 Beta 冲刺day7 凡事预则立- ...

  9. C语言博客作业--函数 陈张鑫

    一.PTA实验作业 题目1:6-3 使用函数判断完全平方数 1. 本题PTA提交列表 2. 设计思路 1.定义int IsSquare( int n )函数 2.判断(sqrt(n)是否为整数 3., ...

  10. Beat冲刺报告---Day0

    Beta阶段报告---Day0 1.需要改进完善的功能   我们上一阶段开发由于开发时间匆忙,对于爬虫耗时的优化没有考虑.优化的空间我在Alpha阶段的总结报告里说过,具体看下图.   这张图显示出爱 ...