mysql 查询每门功成绩最好的前两名,MySQL查询作业(未完成)

版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/NewBeeMu/article/details/98651701

CREATE TABLE Student(

s_id VARCHAR(20),

s_name VARCHAR(20) NOT NULL DEFAULT '',

s_birth VARCHAR(20) NOT NULL DEFAULT '',

s_sex VARCHAR(10) NOT NULL DEFAULT '',

PRIMARY KEY(s_id)

);

CREATE TABLE Course(

c_id VARCHAR(20),

c_name VARCHAR(20) NOT NULL DEFAULT '',

t_id VARCHAR(20) NOT NULL,

PRIMARY KEY(c_id)

);

CREATE TABLE Teacher(

t_id VARCHAR(20),

t_name VARCHAR(20) NOT NULL DEFAULT '',

PRIMARY KEY(t_id)

);

CREATE TABLE Score(

s_id VARCHAR(20),

c_id VARCHAR(20),

s_score INT(3),

PRIMARY KEY(s_id,c_id)

);

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 Course VALUES('01' , '语文' , '02');

INSERT INTO Course VALUES('02' , '数学' , '01');

INSERT INTO Course VALUES('03' , '英语' , '03');

INSERT INTO Teacher VALUES('01' , '张三');

INSERT INTO Teacher VALUES('02' , '李四');

INSERT INTO Teacher VALUES('03' , '王五');

INSERT INTO Score VALUES('01' , '01' , 80);

INSERT INTO Score VALUES('01' , '02' , 90);

INSERT INTO Score VALUES('01' , '03' , 99);

INSERT INTO Score VALUES('02' , '01' , 70);

INSERT INTO Score VALUES('02' , '02' , 60);

INSERT INTO Score VALUES('02' , '03' , 80);

INSERT INTO Score VALUES('03' , '01' , 80);

INSERT INTO Score VALUES('03' , '02' , 80);

INSERT INTO Score VALUES('03' , '03' , 80);

INSERT INTO Score VALUES('04' , '01' , 50);

INSERT INTO Score VALUES('04' , '02' , 30);

INSERT INTO Score VALUES('04' , '03' , 20);

INSERT INTO Score VALUES('05' , '01' , 76);

INSERT INTO Score VALUES('05' , '02' , 87);

INSERT INTO Score VALUES('06' , '01' , 31);

INSERT INTO Score VALUES('06' , '03' , 34);

INSERT INTO Score VALUES('07' , '02' , 89);

INSERT INTO Score VALUES('07' , '03' , 98);

1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数

SELECT * FROM (SELECT * FROM score AS s1 WHERE s1.c_id="01") AS s01,(SELECT * FROM score AS s1 WHERE s1.c_id="02") AS s02 WHERE s01.s_score > s02.s_score AND s01.s_id = s02.s_id;

2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数

SELECT * FROM (SELECT * FROM score AS s1 WHERE s1.c_id="01") AS s01,(SELECT * FROM score AS s1 WHERE s1.c_id="02") AS s02 WHERE s01.s_score < s02.s_score AND s01.s_id = s02.s_id;

3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩

select s2.s_id,s1.s_name,s2.avgs from student s1,(select s_id,avg(s_score) avgs from score group by s_id) as s2 where s1.s_id=s2.s_id and s2.avgs>60;

4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩 -- (包括有成绩的和无成绩的)

select s2.s_id,s1.s_name,s2.avgs from student s1,(select s_id,avg(s_score) avgs from score group by s_id) as s2 where s1.s_id=s2.s_id and s2.avgs<60;

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

select t2.s_id,t2.s_name,COUNT(t1.c_id) AS sun_course,SUM(t1.s_score) AS sum_score from student t2 left join score t1 on t1.s_id = t2.s_id group by t1.s_id;

6、查询"李"姓老师的数量

SELECT COUNT(t_name) FROM teacher WHERE t_name LIKE "李%";

7、查询学过"张三"老师授课的同学的信息

SELECT s1.s_id FROM score AS s1 WHERE c_id=(SELECT c.c_id FROM course AS c WHERE t_id=(SELECT t.t_id FROM teacher AS t WHERE t_name="张三"));

select * from student t2 left join score t1 on t1.s_id = t2.s_id where c_id=(select c_id from course where t_id=(select t_id from teacher where t_name="张三"));

8、查询没学过"张三"老师授课的同学的信息

SELECT * FROM student WHERE s_id NOT IN (SELECT DISTINCT s_id FROM score WHERE c_id IN (SELECT t2.c_id FROM teacher t1,course t2 WHERE t1.t_id = t2.t_id AND t1.t_name = '张三'));

9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息

SELECT * FROM student WHERE s_id IN (SELECT t1.s_id FROM score t1,score t2 WHERE t1.s_id = t2.s_id AND t1.c_id = '01' AND t2.c_id = '02');

10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息

SELECT DISTINCT stu.* FROM score s1 ,student stu WHERE s1.s_id NOT IN((SELECT stu.s_id FROM student stu ,(SELECT s_id FROM score WHERE c_id='01') as s1 ,(SELECT s_id FROM score WHERE c_id='02') as s2

WHERE stu.s_id = s1.s_id AND s1.s_id=s2.s_id)) AND stu.s_id=s1.s_id;

11、查询没有学全所有课程的同学的信息

12、询至少有一门课与学号为"01"的同学所学相同的同学的信息

13、查询和"01"号的同学学习的课程完全相同的其他同学的信息

14、查询没学过"张三"老师讲授的任一门课程的学生姓名

15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

16、检索"01"课程分数小于60,按分数降序排列的学生信息

17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

18、查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 --及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90

19、按各科成绩进行排序,并显示排名

20、查询不同老师所教不同课程平均分从高到低显示

21、查询学生平均成绩及其名次

22、查询不及格的课程

23、查询课程编号为01且课程成绩在80分以上的学生的学号和姓名;

24、求每门课程的学生人数

25、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩

26、查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩

27、查询每门功成绩最好的前两名

28、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

29、检索至少选修两门课程的学生学号

30、查询选修了全部课程的学生信息

31、查询各学生的年龄 -- 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

32、查询本周过生日的学生

33、查询下周过生日的学生

34、查询本月过生日的学生

35、查询下月过生日的学生

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,首先需要在Django中配置连接MySQL数据库。 在settings.py文件中,加入以下代码更新DATABASES配置: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': 'your_host', 'PORT': 'your_port', } } ``` 其中,`your_database_name` 为你的MySQL数据库名称,`your_username` 和 `your_password` 是你的MySQL数据库的用户名和密码,`your_host` 是你的MySQL数据库的主机名,`your_port` 是你的MySQL数据库的端口号,默认为3306。 接下来,创建一个Django项目,并在其中创建一个名为“drug_interaction”的应用程序。在应用程序的views.py文件中添加以下代码: ```python from django.shortcuts import render from django.db import connection def drug_interaction(request): if request.method == 'POST': drug1 = request.POST.get('drug1') drug2 = request.POST.get('drug2') cursor = connection.cursor() cursor.execute("SELECT * FROM drug_interaction WHERE drug1=%s AND drug2=%s", [drug1, drug2]) results = cursor.fetchall() if len(results) > 0: return render(request, 'drug_interaction_result.html', {'results': results}) else: return render(request, 'drug_interaction_result.html', {'message': '抱歉,查询到相关信息。'}) return render(request, 'drug_interaction.html') ``` 在这个视图函数中,我们首先判断请求方法是否为POST,如果是POST请求,则获取提交的两种药品名称,从数据库中查询相互作用信息,如果查询到数据,则返回drug_interaction_result.html模板页面并返回查询结果,否则返回drug_interaction_result.html模板页面并返回“抱歉,查询到相关信息。”的提示信息。 接下来,在应用程序的urls.py文件中添加以下代码: ```python from django.urls import path from . import views urlpatterns = [ path('drug_interaction/', views.drug_interaction, name='drug_interaction'), ] ``` 这样,我们就完成了视图函数和URL路由的配置。接下来,我们需要创建drug_interaction.html模板页面,其中包括一个表单,用户可以在表单中输入两种药品名称进行查询。 ```html {% extends 'base.html' %} {% block content %} <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">查询两种药品相互作用信息</div> <div class="card-body"> <form method="post"> {% csrf_token %} <div class="form-group"> <label for="drug1">药品1:</label> <input type="text" class="form-control" id="drug1" name="drug1" required> </div> <div class="form-group"> <label for="drug2">药品2:</label> <input type="text" class="form-control" id="drug2" name="drug2" required> </div> <button type="submit" class="btn btn-primary">查询</button> </form> </div> </div> </div> </div> </div> {% endblock %} ``` 最后,在应用程序的templates文件夹中创建drug_interaction_result.html模板页面,用于显示查询结果或提示信息。 ```html {% extends 'base.html' %} {% block content %} <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">查询结果</div> <div class="card-body"> {% if message %} <p>{{ message }}</p> {% else %} <table class="table"> <thead> <tr> <th>药品1</th> <th>药品2</th> <th>相互作用</th> </tr> </thead> <tbody> {% for result in results %} <tr> <td>{{ result.0 }}</td> <td>{{ result.1 }}</td> <td>{{ result.2 }}</td> </tr> {% endfor %} </tbody> </table> {% endif %} </div> </div> </div> </div> </div> {% endblock %} ``` 这样,我们就完成了一个查询两种药品相互作用信息的页面,内容来自MySQL数据库,点击查询按钮如果在数据库中查询到对应的信息则跳转显示相互作用结果信息,如果没有查询到信息,则输出“抱歉,查询到相关信息”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值