zoukankan      html  css  js  c++  java
  • 【mysql经典题目】科目成绩都大于80分每个科目的第一名总成绩排名

    参考:http://blog.csdn.net/lifushan123/article/details/44948135


    1、查询出科目成绩都大于80分的学生的名字?

    drop table if EXISTS tmp_1;
    create table tmp_1
    (`Id` INT NOT NULL AUTO_INCREMENT,
    name varchar(10),
    subject varchar(10),
    score int,
    PRIMARY KEY(`Id`));
    
    insert into tmp_1 (name,subject,score) values ('李云龙','语文',79);
    insert into tmp_1 (name,subject,score) values ('李云龙','数学',81);
    insert into tmp_1 (name,subject,score) values ('楚云飞','语文',81);
    insert into tmp_1 (name,subject,score) values ('楚云飞','数学',89);
    insert into tmp_1 (name,subject,score) values ('张大彪','语文',79);
    insert into tmp_1 (name,subject,score) values ('张大彪','数学',90);

    -- 虽然瞟一眼就知道答案是楚云飞,但是我们要通过sql求出结果

    select name
    from tmp_1
    group by name
    having sum(score > 80) > 1;
    
    或者
    
    select a.name
    from tmp_1 a
    left join tmp_1 b on b.name = a.name
    where a.score > 80 and b.score > 80 and a.subject != b.subject
    group by a.name;


    2、查询出每个科目的第一名的学生的学科、姓名、分数[依次是数学、语文]?;

    select a.subject,name ,max_score
    from tmp_1 a
    left join (select subject,max(score) max_score from tmp_1 group by subject) b on  a.score=b.max_score
    where a.subject=b.`subject`
    order by
    case when a.subject='数学' then 1
     when a.subject='语文' then 2 else 3 end ;


    3、查询出总成绩排名,字段为姓名和分数,降序展示?;

    select name,sum(score)
    from tmp_1
    group by NAME
    order by sum(score) desc;



  • 相关阅读:
    linux中编译C语言程序
    plsql 基础教程(二)
    plsql 基础教程(一)
    plsql开发笔记和小结
    表的约束
    一道面试题:说说进程和线程的区别
    HashTable实现原理
    HashMap、Hashtable、HashSet三种hash集合的区别
    Eclipse快捷键大全
    Statement、 PreparedStatement 、CallableStatement 区别和联系
  • 原文地址:https://www.cnblogs.com/xphdbky/p/7646349.html
Copyright © 2011-2022 走看看