题目描述

现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个性别的
用户分别有多少参赛者,请取出相应结果

用户申请表 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数据包括:身高、体重、年龄、性别,且是以英文逗号作为区分,解决方案有:

  1. SUBSTRING_INDEX 文本函数
  2. 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 统计每种性别的人数】相关推荐

  1. SQL 一条SQL语句 统计 各班总人数、男女各总人数 、该班级男女 比例

    select  sClass 班级,count(*)  班级学生总人数, sum(case when sGender=0 then 1 else 0 end)  该班级女生人数, sum(case w ...

  2. sql统计各分数段人数示例

    经常需要进行数据统计分析,可以结合sql语句中的sum记和.case分类来实现分类统计. 例如统计各分数段人数.90-100分数段内的标记为A,80-89分数段内的标记为B,70-79分数段内的标记为 ...

  3. oracle 月累计,oracle 可有什么方法 统计每月累积购买人数?

    oracle 可有什么方法 统计每月累积购买人数? oracle 可有什么方法 统计每月累积购买人数 比如说有个门店 2008年购买商品的人数 表:t_buy_log  字段 f_username 用 ...

  4. 【LeetCode-SQL】580. 统计各专业学生人数

    目录 一.题目 二.解决 1.left join 三.参考 一.题目 表: Student +--------------+---------+ | Column Name | Type | +--- ...

  5. 按照班级,统计班级的总人数,男生人数和女生人数分别是多少

    有student表,按照班级,统计班级的总人数,男生人数和女生人数分别是多少. select stuClass,count(stuName) 班级人数,sum(case when stuSex='男' ...

  6. 使用结构体数组统计男、女人数,计算全体学生的平均年龄、平均成绩,并将高于平均成绩的学生信息输出

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p165 习题6 3.输入10个学生的信息(包括学号.姓名.性别.年龄.成绩)组成结构体数组,分别统计男 ...

  7. SQL Server统计信息:问题和解决方式

    SQL Server统计信息:问题和解决方式 参考文章: (1)SQL Server统计信息:问题和解决方式 (2)https://www.cnblogs.com/yutingliuyl/p/7257 ...

  8. SQL语句统计每天、每月、每年的数据

    SQL语句统计每天.每月.每年的数据 1.每年 select year(ordertime) 年, sum(Total) 销售合计 from 订单表 group by year(ordertime) ...

  9. 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 ...

最新文章

  1. mimo的误码率_揭晓MU-MIMO黑科技!
  2. 35岁前务必成功的12级跳(男女通用) 转
  3. 用系统滚动条实现NumericUpDown的原理
  4. soapui oracle groovy,soapUI+groovy 接口测试之部分groovy使用记录
  5. jbutton 数组创建 java_java-将JButton数组添加到JPanel(按钮不可见)
  6. 一些基于Java的AI框架:Encog,JavaML,Weka
  7. [转载] Java中的元数据
  8. ECCV 2020 | 图匠数据、华中师范提出低质退化文本识别算法PlugNet
  9. SAP License:员工离职分析
  10. IE6 浏览器常见兼容问题
  11. python怎么打字母_如何用python打印字母表?
  12. Ubuntu无法切换中文输入法的解决方法
  13. excel打不开html超链接,excel超链接打不开怎么回事 excel超链接的详细制作教程
  14. docker 20.10.9 dockerd containerd containerd-shim-runc-v2 runc 组件分析
  15. java 统计数字个数_JAVA统计数字个数
  16. 美国国土安全部:Log4j 漏洞的影响将持续十年或更久
  17. 【Proteus仿真】51单片机+SHT11温湿度传感器+LCD1602显示
  18. iOS 视频音频播放器 文件管理的实现
  19. 在线拼接图片工具HTML源码
  20. 2017 中国电信(美洲)公司CTExcel电话卡使用攻略

热门文章

  1. 魅族手机使用鸿蒙系统,魅族宣布接入鸿蒙是怎么回事
  2. 《深度学习进阶 自然语言处理》学习笔记(2)
  3. Excel多条件筛选求和
  4. 移动端h5 层叠轮播图,uniapp微信小程序层叠轮播图,3d轮播图
  5. python通过什么来区分不同语句块_python经由过程什么来辨别差别的语句块?_后端开发...
  6. 《肖申克的救赎》见解,心得、分享
  7. 55寸液晶电视成主流 这几个关键点你别错过
  8. 指定打印机打印、条码 、小票打印 web端打印机控件 LODOP的使用
  9. 【zz】如何在word中自动给姓名按姓氏笔画排序
  10. GIt创建ssh公钥