HQL18 分组计算练习题

练习题目来自牛客网sq在线编程 非技术快速入门分组计算练习题_牛客题霸_牛客网 (nowcoder.com)

测试用例

create database nk_test;  //创建数据库
use nk_test;    //进入数据库

-- 创建测试表
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int,
`device_id` int,
`gender` STRING,
`age` int ,
`university` STRING,
`gpa` float,
`active_days_within_30` float,
`question_cnt` float,
`answer_cnt` float
);

-- 向测试表中插入数据
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学',3.4,7,2,12);
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学',4.0,15,5,25);
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学',3.2,12,3,30);
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学',3.6,5,1,2);
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学',3.8,20,15,70);
INSERT INTO user_profile VALUES(6,2131,'male',28,'山东大学',3.3,15,7,13);
INSERT INTO user_profile VALUES(7,4321,'male',28,'复旦大学',3.6,9,6,52);

描述

题目:现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。

用户信息表:user_profile

30天内活跃天数字段(active_days_within_30)

发帖数量字段(question_cnt)

回答数量字段(answer_cnt)

iddevice_idgenderageuniversitygpaactive_days_within_30question_cntanswer_cnt
12138male21北京大学3.47212
23214male复旦大学4.015525
36543female20北京大学3.212330
42315female23浙江大学3.6512
55432male25山东大学3.8201570
62131male28山东大学3.315713
74321male26复旦大学3.69652

第一行表示:id为1的用户的常用信息为使用的设备id为2138,性别为男,年龄21岁,北京大学,gpa为3.4在过去的30天里面活跃了7天,发帖数量为2,回答数量为12

。。。

最后一行表示:id为7的用户的常用信息为使用的设备id为4321,性别为男,年龄26岁,复旦大学,gpa为3.6在过去的30天里面活跃了9天,发帖数量为6,回答数量为52

你的查询返回结果需要对性别和学校分组,示例如下,结果保留1位小数,1位小数之后的四舍五入:

genderuniversityuser_numavg_active_dayavg_question_cnt
male北京大学17.02.0
male复旦大学212.05.5
female北京大学112.03.0
female浙江大学15.01.0
male山东大学217.511.0

解决方案

SELECT 
    gender,university,
    COUNT(gender) as user_num,
    AVG(active_days_within_30) as avg_active_day,
    AVG(question_cnt) as avg_question_cnt 
FROM user_profile 
GROUP BY university,gender

在这里插入图片描述

方案分析

题目要求对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。

当看见每个学校不同性别这里,就应想到要先对学校进行分组,再对性别进行分组,这样就将不同学校不同性别的人聚在了一起。

计算人数使用 count计数,30天内的平均活跃天数只需要要对30天内的活跃天数字段取平均值(avg)即可,

平均发帖数也只需对发帖数量字段求取平均值即可(avg)。

计算人数使用 count计数,30天内的平均活跃天数只需要要对30天内的活跃天数字段取平均值(avg)即可,

平均发帖数也只需对发帖数量字段求取平均值即可(avg)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值