[编程题]截取出年龄

代码港湾 课程设计 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

回复

共2条回复 我来回复
  • 毕业设计货栈
    这个人很懒,什么都没有留下~
    评论
    #方式一
    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 )
    
    
                然后再根据年龄进行分组,计数
    
    0条评论
  • 源码客栈
    这个人很懒,什么都没有留下~
    评论
    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)
    
    0条评论

发表回复

登录后才能评论