牛客刷题SQL
1.SQL26 计算25岁以上和以下的用户数量
题解:要进行这道题的查询要用到 If 或 Case 函数,在此就简单讲述以下 if 和 Case 函数的基本用法。
IF(expr1,expr2,expr3)
expr1 是个判断语句如果expr1=TRUE ,则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值。
Case语句有两种形式:第一种评估一个或多个条件,并返回第一个符合条件的结果。 如果没有条件是符合的,则返回ELSE子句部分的结果,如果没有ELSE部分,则返回NULL:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
AC代码如下:
select if(age<25 or age is null,"25岁以下","25岁及以上") age_cut,count(*) number
from user_profile
group by age_cut
select case when age>=25 then '25岁及以上' else '25岁以下' end age_cut,count(*) number
from user_profile
group by age_cut
2.SQL30 统计每种性别的人数
题解:查询这道题目要用到substring_index()函数
substring_index()函数作用:用来截取字符串的
substring_index(str , dlm , cnt)
str:要处理的字符串
dlm:分隔符
cnt:计数
AC代码如下:
select SUBSTRING_INDEX(profile,',',-1) gender,count(device_id) number
from user_submit
group by gender;