SQL入门题解 | #统计每种性别的人数#
统计每种性别的人数
https://www.nowcoder.com/practice/f04189f92f8d4f6fa0f383d413af7cb8
# (1)SUBSTRING_INDEX的写法 SELECT SUBSTRING_INDEX(profile,",",-1) gender,COUNT(*) number FROM user_submit GROUP BY gender; # (2)LIKE的写法【mark一下,原来有IF(profile LIKE '%female','female','male') 这样的方式】 SELECT IF(profile LIKE '%female','female','male') gender,COUNT(*) number FROM user_submit GROUP BY gender; # (3) IF select case when profile like '%,male' then 'male' when profile like '%,female' then 'female' end gender, count(device_id) from user_submit group by gender;
问题分解:
- 限定条件:无;
- 每个性别:按性别分组group by gender,但是没有gender字段,需要从profile字段截取,按字符,分割后取出即可。可使用substring_index函数可以按特定字符串截取源字符串。
- substring_index(FIELD, sep, n)可以将字段FIELD按照sep分隔:
- (1).当n大于0时取第n个分隔符(n从1开始)左边的全部内容;
- (2).当n小于0时取倒数第n个分隔符(n从-1开始)右边的全部内容;
- 因此,本题可以直接用substring_index(profile, ',', -1)取出性别。
- 附:substring_index函数解析https://zhuanlan.zhihu.com/p/109778760
- 多少参赛者:计数统计,count(device_id)
SQL错题 文章被收录于专栏
每天学习一遍 刷题刷题 越刷越强!