zoukankan      html  css  js  c++  java
  • Mysql将学生分数行转列并求和

    建表

    CREATE TABLE `score` (
        `id` INT(5) NOT NULL AUTO_INCREMENT,
        `name` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
        `obj` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
        `fenshu` INT(10) NULL DEFAULT '0',
        PRIMARY KEY (`id`) USING BTREE
    )
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB
    AUTO_INCREMENT=11
    ;

    插入数据

    INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('李四', '语文', '40');
    INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('李四', '数学', '50');
    INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('李四', '英语', '60');
    
    INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('张三', '语文', '10');
    INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('张三', '数学', '20');
    INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('张三', '英语', '30');

    数据为:

     执行行转列查询:

    SELECT NAME,
    SUM(case when obj = '语文' then fenshu ELSE 0 END) AS '语文',
    SUM(case when obj = '数学' then fenshu ELSE 0 END) AS '数学',
    SUM(case when obj = '英语' then fenshu ELSE 0 END) AS '英语',
    SUM(fenshu)
    FROM score
    GROUP BY 
    NAME

    查询结果为:

  • 相关阅读:
    P1443 马的遍历
    P1747 好奇怪的游戏
    蜀绣
    Five hundred miles
    如果没有你
    Yellow
    流星

    深入理解计算机中的 csapp,h和csapp.c
    可迭代的集合类型使用foreach语句
  • 原文地址:https://www.cnblogs.com/yoyowin/p/13274945.html
Copyright © 2011-2022 走看看