MySQL -- 行轉列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)

列轉行: 多列轉多行

行轉列:多行轉多列html

 

如下轉自: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」)post

複製代碼
SELECT
    `name`,
    GROUP_CONCAT(course, ":", score) AS 成績
FROM
    student
GROUP BY
    `name`;
複製代碼

 -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --- - -- -- -- -- -- -- -- -- -- -- -- -- -spa

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

 

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- code

多來點面試題:htm

計算各班級及格人數:blog

    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 : 數學

啦啦啦it

相關文章
相關標籤/搜索