天天看點

記錄一個sql

記錄一個sql

其中sex為1表示男性,2表示女性,population是地區人口。

要想獲得下面格式的資料:

記錄一個sql

首先,目的資料明顯是按照性别分組的,但是要轉成漢字“男”和“女”,是以使用CASE子句來轉義sex列的内容:

CASE 
 WHEN sex =  THEN '男'
 ELSE '女'
 END AS '性别'
           

然後根據轉義的内容進行分組,因為CASE子句可以存在于GROUP BY子句中,是以:

GROUP BY CASE 
          WHEN sex =  THEN '男'
          ELSE '女'
         END
           

表分組之後是這樣的:

記錄一個sql

然後就可以根據分組後的資料進行聚合函數。

SELECT CASE 
        WHEN sex =  THEN '男'
        ELSE '女'
    END AS '性别', SUM(population) AS '全國', MAX(CASE 
        WHEN pref_name = '德島' THEN population
        ELSE 
    END) AS '德島'
    , MAX(CASE 
        WHEN pref_name = '香川' THEN population
        ELSE 
    END) AS '香川', MAX(CASE 
        WHEN pref_name = '愛媛' THEN population
        ELSE 
    END) AS '愛媛'
    , MAX(CASE 
        WHEN pref_name = '高知' THEN population
        ELSE 
    END) AS '高知', SUM(CASE 
        WHEN pref_name IN ('德島', '香川', '愛媛', '高知') THEN population
        ELSE 
    END) AS '四國(再揭)'
FROM poptbl2
GROUP BY CASE 
        WHEN sex =  THEN '男'
        ELSE '女'
    END;