记录一条面试sql题目

有一个学生信息表,

字段分别为,name、age、sex。

age字段包含0-50岁的都包含,有的age字段为null。

如果为null将它归为18以下。

现在要用一个sql,比如查出如下字段和数据。

age_size population

0到18岁 7

18岁到25岁 20

25岁以上 10

sql 复制代码
SELECT 
    CASE 
        WHEN age < 18 OR age IS NULL THEN '0到18岁'
        WHEN age BETWEEN 18 AND 25 THEN '18岁到25岁'
        ELSE '25岁以上'
    END AS age_size,
    COUNT(*) AS population
FROM student_info
GROUP BY 
    CASE 
        WHEN age < 18 OR age IS NULL THEN '0到18岁'
        WHEN age BETWEEN 18 AND 25 THEN '18岁到25岁'
        ELSE '25岁以上'
    END;

主要使用了 case when xxxx then xxx when xxx then xxx else xxx end as xxx。请注意

case when then else end,这里的end一定要有,表示case when语句的停止。