MySQL case

/*创建表c1*/

CREATE TABLE c1 (
    id INT,
    sex VARCHAR (10),
    score INT
);

/*插入数据*/
INSERT INTO  c1
VALUES
    (1001, '' ,65),
    (1002, '' ,75),
    (1003, '' ,82),
    (1004, '' ,70),
    (1005, '' ,89),
    (1006, '' ,90),
    (1007, '' ,85);

SELECT * FROM c1;

/*将性别男、女分别用0、1替换*/

SELECT
    id,
    CASE 
        WHEN sex = '' THEN 0
        WHEN sex = '' THEN 1 END sex ,
    score
FROM c1;

 

/*将成绩分为小于60 差,60~80 中,80~90良,90以上优*/

SELECT * ,
    CASE 
        WHEN score<60 THEN ''
        WHEN score>=60 AND score<80 THEN ''
        WHEN score>=80 AND score<90 THEN ''
        WHEN score>=90  THEN '' END level
FROM c1;

 

/*将成绩等级分为四列*/
SELECT id, sex,score,
    CASE  WHEN score<60 THEN '' END AS level1,
    CASE  WHEN score>=60 AND score<80 THEN '' END AS level2,
    CASE  WHEN score>=80 AND score<90 THEN '' END AS level3,
    CASE  WHEN score>=90  THEN ''END  AS level4
FROM c1;

 

/*按照性别计算各成绩等级中的数量*/

SELECT sex,
    SUM(CASE WHEN score<60 THEN 1 ELSE 0 END) AS '',
    SUM(CASE WHEN score>=60 AND score<80 THEN 1 ELSE 0 END) AS '',
    SUM(CASE WHEN score>=80 AND score<90 THEN 1 ELSE 0 END) AS '',
    SUM(CASE WHEN score>=90 THEN 1 ELSE 0 END) AS ''
FROM c1
GROUP BY sex;

 

原文地址:https://www.cnblogs.com/niniya/p/9033425.html