首页 > 试题广场 >

统计每种性别的人数

[编程题]统计每种性别的人数
  • 热度指数:294175 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
题目:现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个性别的用户分别有多少参赛者,请取出相应结果

示例: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

示例1

输入

drop table if exists user_submit;
CREATE TABLE `user_submit` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`profile` varchar(100) NOT NULL,
`blog_url` varchar(100) NOT NULL
);
INSERT INTO user_submit VALUES(1,2138,'180cm,75kg,27,male','http:/url/bisdgboy777');
INSERT INTO user_submit VALUES(1,3214,'165cm,45kg,26,female','http:/url/dkittycc');
INSERT INTO user_submit VALUES(1,6543,'178cm,65kg,25,male','http:/url/tigaer');
INSERT INTO user_submit VALUES(1,4321,'171cm,55kg,23,female','http:/url/uhsksd');
INSERT INTO user_submit VALUES(1,2131,'168cm,45kg,22,female','http:/url/sysdney');

输出

male|2
female|3
头像 牛客题解官
发表于 2025-02-14 14:49:32
精华题解 解题思路 为了从包含用户信息的 profile 字段中提取性别并进行分组统计,可以使用以下方法: 首先,利用字符串函数 SUBSTRING_INDEX 从 profile 字段中提取性别信息,该字段格式为“身高,体重,年龄,性别”,通过获取最后一个逗号后的部分来提取性别。 接着,使用 GROUP 展开全文
头像 细雨噜噜噜
发表于 2021-09-28 09:29:27
转自https://www.cnblogs.com/mqxs/p/7380933.html (1)SUBSTRING_INDEX的写法 SELECT SUBSTRING_INDEX(profile,",",-1) gender,COUNT(*) number FROM user_ 展开全文
头像 疯不觉201904181317132
发表于 2021-10-28 14:44:48
case语句+模糊查询=笨蛋题解! 了解case语句语法和模糊查询规则即可! select case when profile like '%,male' then 'male' when profile like '%,female' then 'female' end gender,count( 展开全文
头像 webary
发表于 2021-09-03 12:00:11
题意明确: 统计每个性别的用户分别有多少参赛者 问题分解: 限定条件:无; 每个性别:按性别分组group by gender,但是没有gender字段,需要从profile字段截取,按字符,分割后取出即可。可使用substring_index函数可以按特定字符串截取源字符串。 subst 展开全文
头像 牛客406250295号
发表于 2021-10-19 09:08:28
CASE + LIKE 方法 SELECT CASE WHEN profile LIKE '%,male' then 'male' WHEN profile LIKE '%,female' then 'female' else '其他' end as gender, COUNT(*) AS nu 展开全文
头像 万花筒丶写轮眼
发表于 2021-09-15 16:51:16
select "male" as gender,count(profile) from user_submit where right(profile,6)<>"female" union ALL select "female" 展开全文
头像 PangPi
发表于 2022-12-23 20:40:04
select case when profile like '%,male' then 'male' when profile like '%,female' then 'female' end gender, count(device_id) from user_submit group by 展开全文
头像 DraonAbyss
发表于 2021-10-08 13:19:16
知识 select 语句中 if 的用法 IF( expr1 , expr2 , expr3 ) expr1 的值为 TRUE,则返回值为 expr2 expr1 的值为FALSE,则返回值为 expr3 题解 依旧使用case和like即可简单实现 SELECT CASE WHEN profil 展开全文
头像 阿翟啊
发表于 2021-11-22 19:40:40
使用 find_in_set() 函数也可,见貌似暂时没人用这个方法,分享给大家 SELECT case when FIND_IN_SET('male',profile) then 'male' when FIND_IN_SET('female',profile) the 展开全文
头像 牛客182179768号
发表于 2021-09-22 17:28:31
本题主要考察文本函数的使用思路:第一,原关系型数据表中相应字段信息是混合在一起,需要通过对原表进行重构后再进行相应查询;通过substring_index()文本截取函数提取所需的性别字段列信息进行重命名列,完成数据表的重构;第二,对新表利用GROUP BY 进行分组后通过COUNT()函数实现人数 展开全文
头像 奋斗终身_伟大复兴
发表于 2021-09-24 10:59:22
看了其他人的解题,确实是之前答案从多表获得,到现在从单表,分成多表,再结合获得数据。确实两种思想!!! SELECT gender ,COUNT(device_id) as number # 提示gender是后面新生成的表的字段FROM(SELECT device_id, SUBSTRING_IN 展开全文