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;



  • 相关阅读:
    centos 安装 TortoiseSVN svn 客户端
    linux 定时任务 日志记录
    centos6.5 安装PHP7.0支持nginx
    linux root 用户 定时任务添加
    composer 一些使用说明
    laravel cookie写入
    laravel composer 安装指定版本以及基本的配置
    mysql 删除重复记录语句
    linux php redis 扩展安装
    linux php 安装 memcache 扩展
  • 原文地址:https://www.cnblogs.com/xphdbky/p/7646349.html
Copyright © 2011-2022 走看看