zoukankan      html  css  js  c++  java
  • sql查询1

    一张sc表有(s_id,c_id,score)

    查询条件按照s_id的平均score排名次

    首先

    select s_id,avg(score) from sc group by s_id;

    名次就是;比如说s_id=2的名次就是平均分比他大的人数+1,这样让上面2个表as T1,AS T2,T1.avg(score)>T2.avg(score)

    select 1+(select count(*) from
     (select s_id,avg(score) as 平均成绩 from sc group by s_id) as T1 where T1.平均成绩>T2.平均成绩
    )as RANK,s_id,平均成绩
    from (select s_id,avg(score) as 平均成绩 from sc group by s_id)
    as T2 order by 平均成绩 desc;

    这个可以完成查询了,如果平均成绩相等,count(distinct),但是我之前的想法是

    select count(T1.平均成绩)+1 as Rank from
    (select s_id,avg(score) as 平均成绩 from sc group by s_id) as T1,
    (select s_id,avg(score) as 平均成绩 from sc group by s_id) as T2
    where T1.平均成绩>T2.平均成绩;

    然后查询的值是16,这个就难理解了

  • 相关阅读:
    tomcat启动startup.bat一闪而过
    shell简介
    hbase总结,值得一看
    hive的 安装和配置
    存储器管理
    银行家算法
    洛谷 2590 树的统计
    树链剖分 洛谷 3384
    2.3最大公约数与最小公倍数
    2.2 素数与合数
  • 原文地址:https://www.cnblogs.com/bashala/p/3602894.html
Copyright © 2011-2022 走看看