题目:每个性别的用户分别有多少参赛者。
问题拆解:统计两种性别有多少参赛者,首先想到的要用group up进行分组,其次就是要截取男性和女性。第一种方法可以用substring_idex函数截取字符串,截取到male和female。第二种方法就可以想到用like case when 语句,不是男性就是女性。
substring_index函数的语句
substring_index(str,delim,n)
str表示字符串,delim表示截取数据的字符,n表示截取字符的位置——从左往右是1开始,从右往左就是-1开始)
因为(180cm,75kg,27,male)可以看出字符串可用逗号作为截取依据,性别是在最后所以可以从右往左截取就是-1
函数使用方法就是:substring_index(profile, ',', -1)直接带入查询语句即可。
select
    substring_index(profile, ',', -1) as gender,
    count(*) as number
from user_submit
group by gender
第二种方法就可以想到用like case when 语句,不是男性就是女性。
select 
case
when profile like '%,female' then 'female' else 'male' end as gender
count(*)as number
from user_submit
group by gender
还有另一种写法分开查询男性和女性不推荐 多此一举哈。
select 
case 
when profile like '%,male'then 'male'
when profile like '%,female'then 'female'
else '其他'
end as gender,count(*)as number
from user_submit
group by gender;