`

sql之查询课程数及格的学生姓名

    博客分类:
  • sql
阅读更多
一、sql 问题

两张表,一张学生表,一张成绩表
查询:三门功课全部及格的学生。

学生表:user
id name
1 张三
2 李四
3 王五


成绩表:score

iduser_idsubjectscore
11yuwen30
21shuxue80
31waiyu70
42yuwen70
52shuxue80
62waiyu90
73yuwen50
83shuxue60
93waiyu70



二、答案

select 
    b.name 
from(
    select 
        a.name, 
        count(*) as num
    from(
        select 
            u.name, u.id, s.score
        from  
            score s
            left join user u
            on s.user_id = u.id
    ) a
    where 
        a.score between 60 and 100
    group by 
        a.name
) b
where
    b.num = 3;





三、操作过程


create table user(
    id bigint,
    name varchar(30)
);


insert into user(id, name) value (1, 'zhangsan');
insert into user(id, name) value (2, 'lisi');
insert into user(id, name) value (3, 'wangwu');


create table score(
    id bigint,
    user_id bigint,
    subject varchar(30),
    score int
);

insert into score (id,user_id,subject,score) values (1,1, 'yuwen', 30);
insert into score (id,user_id,subject,score) values (2,1, 'shuxue', 80);
insert into score (id,user_id,subject,score) values (3,1, 'yingyu', 70);

insert into score (id,user_id,subject,score) values (4,2, 'yuwen', 70);
insert into score (id,user_id,subject,score) values (5,2, 'shuxue', 80);
insert into score (id,user_id,subject,score) values (6,2, 'yingyu', 90);

insert into score (id,user_id,subject,score) values (7,3, 'yuwen', 50);
insert into score (id,user_id,subject,score) values (8,3, 'shuxue', 60);
insert into score (id,user_id,subject,score) values (9,3, 'yingyu', 70);




mysql> select 
       b.name 
   from(
       select 
           a.name, 
           count(*) as num
       from(
           select 
               u.name, u.id, s.score
           from  
               score s
               left join user u
               on s.user_id = u.id
       ) a
       where 
           a.score between 60 and 100
       group by 
           a.name
   ) b
   where
       b.num = 3;
+------+
| name |
+------+
| lisi      |
+------+
1 row in set (0.00 sec)



四、过程中遇到的问题记录



mysql> select 
           name 
       from(
           select 
               name, 
               count(*) as num
           from(
               select 
                   u.name, u.id, s.score
               from  
                   score s
                   left join user u
                   on s.user_id = u.id
           )
           where 
               score between 60 and 100
           group by 
               name
       )
       where
           num = 3;

ERROR 1248 (42000): Every derived table must have its own alias




五、拓展:查询成绩高于平均成绩的学生

SELECT name
FROM exam
WHERE score < ( SELECT AVG(score) FROM exam) 




六、拓展:sql 书写格式


SELECT   o.CustomerID, 
         SUM(UnitPrice * Quantity) AS TotalSales 
FROM     OrderDetails AS od 
         INNER JOIN Orders AS o ON od.OrderID = o.OrderID 
GROUP BY o.CustomerID





-
转载请注明,
原文出处:http://lixh1986.iteye.com/blog/2400406










-

分享到:
评论

相关推荐

    10、创建视图,显示每名学生的姓名、选修的课程门数、总周学时数、总学分数和加权平均分的查询,

    10、创建视图,显示每名学生的姓名、选修的课程门数、总周学时数、总学分数和加权平均分的查询,

    数据库原理及运用实验四SQL连接查询.doc

    14. 查询有不及格的学生姓名和所在系:使用 WHERE 语句和 NOT 运算符实现条件查询。 15. 查询所有成绩为优秀(大于 90 分)的学生姓名:使用 WHERE 语句和 AND 运算符实现条件查询。 16. 增加一个表格成绩等级表:...

    实验3答案-sql2.sql

    SQL查询二 2 通过本实验使学生掌握多表查询、子查询以及基本数据操作 二、实验内容 使用实验一建立的银行贷款数据库和表,完成以下查询。 1-4是多表查询和子查询,5-11是数据操作 查询经济性质为“国营”的...

    数据库SQL 子查询资料

    3. **查询不及格学生的学号与姓名 - 'K0001'课程** 假设我们有一个成绩表,可以通过以下查询找出"K0001"课程不及格的学生: ```sql SELECT student_id, name FROM students WHERE student_id IN (SELECT ...

    sql学生成绩查询系统(简单页面

    【SQL学生成绩查询系统】是一个基础的网页应用,主要用于教育机构或个人学习环境中,方便学生、教师或管理员快速查询学生的成绩。系统的核心是数据库管理,通过SQL(结构化查询语言)来操作和检索数据。这里,我们...

    查询数据库中所有有成绩的学生的学号和课程号

    4. **查询选修了C2或C4课程的学生的学号,姓名和课程号**: 在这个查询中,我们使用`IN`操作符来匹配`cno`为'C2'或'C4'的记录。SQL语句如下: ```sql select s.sno, s.sname, e.cno from student s, enroll e ...

    学生学籍管理系统SQL数据库课程设计.docx

    学生学籍管理系统是一个基于SQL数据库的课程设计项目,旨在提高学校对学生信息的管理和查询效率。系统涵盖了学生的基本信息管理、成绩管理、班级管理、课程管理以及财务信息等多个方面,通过计算机自动化处理,解决...

    SQLSERVER查询练习习题.doc

    1. 查询所有年龄在20岁以下的学生姓名及年龄: 使用`SELECT`和`WHERE`子句,结合`GETDATE()`函数获取当前日期,并通过`YEAR()`函数计算年龄。`BETWEEN`运算符用于筛选年龄范围。 2. 查找考试成绩不及格的学生学号...

    数据库中SQL查询语句习题含答案.doc

    这个查询语句使用了 NOT EXISTS 语句来检索学习全部课程的学生姓名。 八、查询所学课程包含学生 S3 所学课程的学生学号 在这个问题中,我们需要查询所学课程包含学生 S3 所学课程的学生学号。为了解决这个问题,...

    简单sql查询练习

    ### 题目11: 查询年龄不在20至23岁之间的学生姓名、系别和年龄。 ```sql SELECT Sname, Sdept, Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23; ``` - **解释**: 此查询筛选出年龄不在20到23岁之间的学生,并...

    sql查询统计

    查询不及格的学生姓名(成绩低于60分) ```sql SELECT DISTINCT 姓名 FROM 学生 WHERE 成绩 ; ``` 该语句用于筛选出表`学生`中成绩低于60分的学生的姓名,并去除重复项。 #### 6. 查询IS和CS专业的学生信息,并按...

    SQL Server 2005中的SQL简单查询

    - **求选修课程数目超过2门,且选修成绩都在及格以上的学生学号:** ```sql USE Teaching; SELECT sc.studentid FROM student_courses sc GROUP BY sc.studentid HAVING COUNT(sc.courseid) &gt; 2 AND MIN(sc....

    数据库基础实验的实验报告附图

    15) 查询每门课程不及格学生人数 16) 查询不及格课程超过3门的学生学号 17) 查询年龄在10到19岁之间的学生信息 18) 查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列 19) 查询选了...

    教学成绩管理系统 java + sql2005 课程设计

    3. 成绩录入与查询:教师可以方便地输入或修改学生的单科成绩,同时提供多种条件的查询功能,如按学生、课程、学期等进行查询。 4. 统计分析:系统能自动生成各类统计报表,如平均分、及格率、排名等,帮助教师了解...

    MYSQL题目练习

    --5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩 --5.1、查询所有有成绩的SQL。 --5.2、查询所有(包括有成绩和无成绩)的SQL。 --6、查询"李"姓老师的数量 --7、查询学过"张三"老师授课的同学...

    数据库学生管理系统SQL

    10. 查询选修了全部课程的学生信息:(需先找出所有课程的cno,然后筛选出所有课程都有的学生) 11. 查询成绩最高的学生信息:(找出最高分,然后对应查询学生信息) 12. 查询选修操作系统课程且专业代码为'07'的...

    c#.net+sqlserver毕业设计学生成绩管理系统

    在学生成绩管理系统中,SQLServer作为后台数据库,用于存储学生的个人信息、课程信息以及成绩数据。开发者可以使用SQL语句进行数据操作,如CREATE TABLE创建表结构,INSERT INTO添加数据,SELECT查询数据,UPDATE...

    sql server 2008学生成绩管理数据库

    使用这个数据库,学生可以查询个人的成绩和选课情况,教师可以查看全班或个别学生的成绩,管理员则可以统计分析整个学院或学校的数据,比如平均分、及格率、最高分和最低分等。 在实际应用中,我们可以通过SQL ...

    SQL高级查询.pdf

    - `stuname`: 学生姓名,`varchar(20)`,不允许为空 - `age`: 年龄,`int`,允许为空 - `sex`: 性别,`char(2)`,不允许为空,需通过检查约束确保输入正确 - `address`: 地址,`varchar(200)`,允许为空 - **...

Global site tag (gtag.js) - Google Analytics