【SQL 03 统计每种性别的人数】
题目描述
现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个性别的
用户分别有多少参赛者,请取出相应结果
用户申请表 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 |
题目分析
题目在于我们要在profile字段里提取出用户的相关性别信息;在profile数据包括:身高、体重、年龄、性别,且是以英文逗号作为区分,解决方案有:
SUBSTRING_INDEX 文本函数
LIKE 函数
SQL实现
(1)SUBSTRING_INDEX的写法:
SELECT SUBSTRING_INDEX(profile,",",-1) AS gender,
COUNT(*) AS number
FROM user_submit
GROUP BY gender;
(2)LIKE的写法1:
SELECT
IF(profile LIKE '%female','female','male') AS gender,
COUNT(*) AS number
FROM user_submit
GROUP BY gender;
这意味找出所有包含female 的数据 认为是 female,其余的都是male;
(3)LIKE的写法2:
SELECT (CASE WHEN profile LIKE '%,male' THEN 'male' WHEN profile LIKE '%,female' THEN 'female' END) AS gender,COUNT(device_id) AS numberFROM user_submit GROUP BY gender;
写法2里LIKE 后面用%,male
中的逗号区分,避免female中的male 带来歧义。
Knowledge Point 知识点
1.SUBSTRING_INDEX() 函数
定义: substring_index()函数用来截取字符串
语法:substring_index(str,delim,count)
str 要处理的字符串
delim 分隔符
count 计数
#示例:
str=www.wiki.com
substring_index(str,'.',1)
# return:www
substring_index(str,'.',-2)
# wiki.com
- 如果 number 是正数,则返回从str左边开始计数的第 number 个delimiter(不包含delimiter)左边的字符串。
- 如果 number 是负数,则返回从str右边开始计数的第(number的绝对值)个delimiter(不包含delimiter)右边的字符串。
- BUT,如果要中间的的 wiki 怎么办?
需要从两个方向截取:
先截取从右数第二个分隔符的右边的全部内容,再截取从左数的第一个分隔符的左边的全部内容:
substring_index(substring_index(str,'.',-2),'.',1);
# return wiki
Reference
牛客网练习
【SQL 03 统计每种性别的人数】相关推荐
- SQL 一条SQL语句 统计 各班总人数、男女各总人数 、该班级男女 比例
select sClass 班级,count(*) 班级学生总人数, sum(case when sGender=0 then 1 else 0 end) 该班级女生人数, sum(case w ...
- sql统计各分数段人数示例
经常需要进行数据统计分析,可以结合sql语句中的sum记和.case分类来实现分类统计. 例如统计各分数段人数.90-100分数段内的标记为A,80-89分数段内的标记为B,70-79分数段内的标记为 ...
- oracle 月累计,oracle 可有什么方法 统计每月累积购买人数?
oracle 可有什么方法 统计每月累积购买人数? oracle 可有什么方法 统计每月累积购买人数 比如说有个门店 2008年购买商品的人数 表:t_buy_log 字段 f_username 用 ...
- 【LeetCode-SQL】580. 统计各专业学生人数
目录 一.题目 二.解决 1.left join 三.参考 一.题目 表: Student +--------------+---------+ | Column Name | Type | +--- ...
- 按照班级,统计班级的总人数,男生人数和女生人数分别是多少
有student表,按照班级,统计班级的总人数,男生人数和女生人数分别是多少. select stuClass,count(stuName) 班级人数,sum(case when stuSex='男' ...
- 使用结构体数组统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p165 习题6 3.输入10个学生的信息(包括学号.姓名.性别.年龄.成绩)组成结构体数组,分别统计男 ...
- SQL Server统计信息:问题和解决方式
SQL Server统计信息:问题和解决方式 参考文章: (1)SQL Server统计信息:问题和解决方式 (2)https://www.cnblogs.com/yutingliuyl/p/7257 ...
- SQL语句统计每天、每月、每年的数据
SQL语句统计每天.每月.每年的数据 1.每年 select year(ordertime) 年, sum(Total) 销售合计 from 订单表 group by year(ordertime) ...
- sql server 统计_看SQL Server 2016中的新实时查询统计信息
sql server 统计 With the release of SQL Server 2016 also comes a great new feature to get a live view ...
最新文章
- mimo的误码率_揭晓MU-MIMO黑科技!
- 35岁前务必成功的12级跳(男女通用) 转
- 用系统滚动条实现NumericUpDown的原理
- soapui oracle groovy,soapUI+groovy 接口测试之部分groovy使用记录
- jbutton 数组创建 java_java-将JButton数组添加到JPanel(按钮不可见)
- 一些基于Java的AI框架:Encog,JavaML,Weka
- [转载] Java中的元数据
- ECCV 2020 | 图匠数据、华中师范提出低质退化文本识别算法PlugNet
- SAP License:员工离职分析
- IE6 浏览器常见兼容问题
- python怎么打字母_如何用python打印字母表?
- Ubuntu无法切换中文输入法的解决方法
- excel打不开html超链接,excel超链接打不开怎么回事 excel超链接的详细制作教程
- docker 20.10.9 dockerd containerd containerd-shim-runc-v2 runc 组件分析
- java 统计数字个数_JAVA统计数字个数
- 美国国土安全部:Log4j 漏洞的影响将持续十年或更久
- 【Proteus仿真】51单片机+SHT11温湿度传感器+LCD1602显示
- iOS 视频音频播放器 文件管理的实现
- 在线拼接图片工具HTML源码
- 2017 中国电信(美洲)公司CTExcel电话卡使用攻略