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;



  • 相关阅读:
    Dotnet微服务:使用HttpclientFactory实现服务之间的通信
    Dotnet微服务:使用Steeltoe集成Eureka
    Lora服务器:Chirpstack连接Lora网关实战
    linux远程windwos软件rdesktop
    kali笔记
    ubuntu笔记
    Swagger使用
    Swagger接口导入Yapi
    Nexus上传自己本地jar包 和下载maven中央仓库里的包到nexus
    docker安装rabbitmq
  • 原文地址:https://www.cnblogs.com/xphdbky/p/7646349.html
Copyright © 2011-2022 走看看