题意:
统计每个性别每个性别的用户分别有多少参赛者
分解:
- 由每个性别,知:group by gender
- 由于没有gender字段,所以需要去profile中提取gender,即:substring_index(profile,',',-1)
- 根据统计用户数,知:count(device_id)
代码:
select substring_index(profile,',',-1) gender, count(device_id) #按照','在profile中,从后往前截取,取倒数第一个逗号后面部分字符串
from user_submit
group by gender #按性别分组
补充知识点:substring_index的用法
substring_index(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置N)
- 取第一个逗号前的字符串 :
SELECT SUBSTRING_INDEX(‘192,168,8,203’,’,’,1);
==>得到结果为: 192
- N可以为负数,表示倒数第N个索引字符后面的字符串。
(有负号的时候,可以将整个字符倒过来看,依旧是第N个字符前面的部分。)
SELECT SUBSTRING_INDEX(‘192,168,8,203’,’,’,-1);
==>得到结果为: 203
- 取第2个逗号前那部分字符串里,最后逗号后面的部分
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(‘192,168,8,203’,’,’,2),’,’,-1);
==>得到结果为: 168
- 取倒数第二个逗号后面部分字符串,再去这部分里第一个都号前的部分:
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(‘192,168,8,203’,’,’,-2),’,’,1);
==> 得到结果为:8
SELECT SUBSTRING_INDEX(‘192,168,8,203’,’,’,-1);
==>得到结果为: 203