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;



  • 相关阅读:
    C# 还原SQL数据库(非存储过程方式)
    C# 无边框窗体移动代码
    SQL 2008 R2 数据库镜像操作
    序列号
    Oracle VM VirtualBox 随系统自动启动虚拟机的方法
    SQL每个用户最后的一条记录
    JS判断是否在微信浏览器打开
    使用device.js检测设备并实现不同设备展示不同网页
    check单选框多个全选与取消全选
    判断滚动是否到达底部
  • 原文地址:https://www.cnblogs.com/xphdbky/p/7646349.html
Copyright © 2011-2022 走看看