题1:
现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个性别的用户分别有多少参赛者,请取出相应结果
示例:user_submit
device_id | profile | blog_url |
2138 | 180cm,75kg,27,male | http:/url/bigboy777 |
3214 | 165cm,45kg,26,female | http:/url/kittycc |
6543 | 178cm,65kg,25,male | http:/url/tiger |
4321 | 171cm,55kg,23,female | http:/url/uhksd |
2131 | 168cm,45kg,22,female | http:/urlsydney |
根据示例,你的查询应返回以下结果:
gender | number |
male | 2 |
female | 3 |
sql:
select substring_index(profile,',',-1) as gender,
count(*) as number
from user_submit
group by gender
substring_index(str,delim,count)
- str:要处理的字符串
- delim:分隔符
- count:计数
例子: str=www.wikibt.com
substring_index(str,' . ',1)结果是:www
substring_index(str,".',2)结果是: www.wikibt
也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如:substring_index(str,'.',-2)
结果为: wikibt.com
如果要中间的的wikibt怎么办?
可以分步骤,先得到后面两个,然后在当前的基础上得到第一个,
结果是:substring_index(substring_index(str,'.',-2),.',1);