[编程题]截取出年龄
课程设计
1
题目:现在运营举办了一场比赛,收到了一些参赛申请,表数据记录形式如下所示,现在运营想要统计每个年龄的用户分别有多少参赛者,请取出相应结果
示例:user_submit
根据示例,你的查询应返回以下结果:
示例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');
输出
27|1
26|1
25|1
23|1
22|1
-
#方式一 SELECT SUBSTRING( PROFILE, 12, 2 ) age, COUNT( 1 ) FROM user_submit GROUP BY age; #方式二 SELECT substr( PROFILE, locate( 'kg', PROFILE ) + 3, 2 ) AS age, count( 1 ) FROM user_submit GROUP BY age 看数据,固定是的是cm 和 kg, 离我们想要查的年龄最近的是kg 可以通过 locate( 'kg', PROFILE ) 方法定位到kg的位置 然后往后移动 kg, 3个位置locate( 'kg', PROFILE ) + 3就到了年龄数据 , 然后取两位就是年龄substr( PROFILE, locate( 'kg', PROFILE ) + 3, 2 ) 然后再根据年龄进行分组,计数
-
SELECT substring_index( substring_index(a.profile,',',3) #根据字串截取内容,参数1:主串,参数2:按参数2分割主串,参数3:分割后取出哪一部分 ,',',-1) ,count(1) from user_submit a group by substring_index( substring_index(a.profile,',',3) ,',',-1)
发表回复