zoukankan      html  css  js  c++  java
  • MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)

    列转行: 多列转多行

    行转列:多行转多列

     

    以下转自:https://www.cnblogs.com/ClassNotFoundException/p/6860615.html

    列转行:利用max(case when then)

    复制代码
    SELECT
        `name`,
        MAX(
            CASE 
            WHEN  course='语文' THEN
                score
            END
        ) AS 语文,
        MAX(
            CASE 
            WHEN course='数学' THEN
                score
            END
        ) AS 数学, 
        MAX(
            CASE 
            WHEN course='英语' THEN
                score
            END
        ) AS 英语
    FROM
        student
    GROUP BY `name`
    ;
    复制代码

     

    合并字段显示:利用group_cancat(course,”:”,”score”)

    复制代码
    SELECT
        `name`,
        GROUP_CONCAT(course, ":", score) AS 成绩
    FROM
        student
    GROUP BY
        `name`;
    复制代码

     -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -

    -- 合并字段显示 : 去重、排序
    SELECT rid,GROUP_CONCAT(DISTINCT gid ORDER BY gid)
    FROM gt_lighting.res_lights
    GROUP BY rid;

    -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

    多来点面试题:

    计算各班级及格人数:

        SELECT class,SUM(CASE WHEN score >= 60 THEN 1 END) AS '及格',SUM(CASE WHEN score < 60 THEN 1 END) AS '不及格'
        FROM gradeTable
        GROUP BY class;

    或者:

    复制代码
        SELECT succ.class,succ.su AS '及格',fail.fa AS '不及格' FROM 
        (
        SELECT class,COUNT(1) AS su
        FROM gradeTable
        WHERE score >= 60
        GROUP BY class
        ) AS succ,
        (
        SELECT class,COUNT(1) AS fa
        FROM gradeTable
        WHERE score < 60
        GROUP BY class
        ) AS fail
        WHERE succ.class = fail.class;
    复制代码

    Console : 

    啦啦啦

  • 相关阅读:
    非常不错的学习网站——技术胖
    Vue中使用mescroll.js实现下拉刷新
    2020.10.07【NOIP提高A组】模拟
    2020.10.06【NOIP提高A组】模拟 总结
    2020.09.19【NOIP提高A组】模拟
    2020.09.12【NOIP提高A组】模拟
    GMOJ 4417. 【HNOI2016模拟4.1】神奇的字符串 题解
    上下界网络流学习笔记
    GMOJ 3571. 【GDKOI2014】内存分配 题解
    [模板]人工栈
  • 原文地址:https://www.cnblogs.com/maohuidong/p/11015972.html
Copyright © 2011-2022 走看看