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 : 

    啦啦啦

  • 相关阅读:
    博客的开端,找对象不再new
    OpenGL编程 基础篇(六)OpenGL中几种光照参数
    OpenGL编程 基础篇(五)世界窗口和视口
    百练2952:循环数
    百练2811:熄灯问题
    百练2812:恼人的青蛙
    百练3177:判决素数个数
    百练1248:Safecracker
    OpenGL编程 基础篇(四)与鼠标的交互
    OpenGL编程 基础篇(三)用点集绘制函数
  • 原文地址:https://www.cnblogs.com/maohuidong/p/11015972.html
Copyright © 2011-2022 走看看