zoukankan      html  css  js  c++  java
  • 写sql语句统计各个学生各科成绩(case when用法)

    尊重原创:http://blog.csdn.net/love_java_cc/article/details/78268326

    有如下一张表score:

    建表语句:

    [sql] view plain copy
     
    1. CREATE TABLE `score` (`id`  int NOT NULL AUTO_INCREMENT ,`name`  varchar(20) NOT NULL ,`category`  varchar(20) NOT NULL ,`score`  int NOT NULL );  

    现在要去查询学生的各科成绩和总分,效果如下图,用SQL语句写出来

    查询的sql如下:

    [sql] view plain copy
     
    1. select name,sum(case when category='语文' then score else 0 end) as '语文',  
    2. sum(case when category='数学' then score else 0 end) as '数学',  
    3. sum(case when category='英语' then score else 0 end) as '英语',  
    4. sum(score) as '总分' from score group by name;  



    小结:

    case when与case ... when的区别

            case when后面接的是某个表的字段的时候,then可以接另外一个字段,整个字段的查询结果是then后面的类型,如上面示例中,查语文成绩,then后面是score,是整型,那么查出来该字段也是整型;

            case ... when 中,case后面就接了一个字段了,那么该语句查出来的结果,其类型与case后面的字段类型一致。如:case category when '语文' then ...;该语句中,case后面是category,是varchar类型,那么这条case...when语句查出来的结果也是varchar类型。

  • 相关阅读:
    P5468 [NOI2019]回家路线
    P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
    P4390 [BOI2007]Mokia 摩基亚
    P4234 最小差值生成树
    P5459 [BJOI2016]回转寿司
    P2173 [ZJOI2012]网络
    P2163 [SHOI2007]园丁的烦恼
    P3826 [NOI2017]蔬菜
    P3327 [SDOI2015]约数个数和
    P1829 [国家集训队]Crash的数字表格 / JZPTAB
  • 原文地址:https://www.cnblogs.com/xiaohouzai/p/8336485.html
Copyright © 2011-2022 走看看