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;



  • 相关阅读:
    apache http server 和tomcat的区别 以及nginx
    2020-2-12 这样提升自己的口才
    两种常用的队列
    栈的实现与应用
    线性表
    Nginx实现虚拟主机
    将apache添加到服务
    apache安装
    最小生成树
    图的深度优先搜索
  • 原文地址:https://www.cnblogs.com/xphdbky/p/7646349.html
Copyright © 2011-2022 走看看