当前位置:网站首页>SQL Daily Practice (Nioke New Question Bank) - Day 5: Advanced Query
SQL Daily Practice (Nioke New Question Bank) - Day 5: Advanced Query
2022-08-03 08:37:00 【no envy】
1. 查找GPA最高值
题目:运营想要知道复旦大学学生gpa最高值是多少,请你取出相应数据
建表语句:
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`gpa` float);
INSERT INTO user_profile VALUES(1,2234,'male',21,'北京大学',3.2);
INSERT INTO user_profile VALUES(2,2235,'male',null,'复旦大学',3.8);
INSERT INTO user_profile VALUES(3,2236,'female',20,'复旦大学',3.5);
INSERT INTO user_profile VALUES(4,2237,'female',23,'浙江大学',3.3);
INSERT INTO user_profile VALUES(5,2238,'male',25,'复旦大学',3.1);
INSERT INTO user_profile VALUES(6,2239,'male',25,'北京大学',3.6);
INSERT INTO user_profile VALUES(7,2240,'male',null,'清华大学',3.3);
INSERT INTO user_profile VALUES(8,2241,'female',null,'北京大学',3.7);
解题答案:
#Use aggregate function to take maximum value
select max(gpa)
from user_profile
where university = '复旦大学'
或者
#通过gpa倒叙,然后取第一条
select gpa
from user_profile
where university = '复旦大学'
order by gpa DESC
limit 1
2. 计算男生人数以及平均GPA
题目:现在运营想要看一下男性用户有多少人以及他们的平均gpa是多少,用以辅助设计相关活动,请你取出相应数据.
建表语句:
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`gpa` float);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学',3.4);
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学',4.0);
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学',3.2);
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学',3.6);
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学',3.8);
INSERT INTO user_profile VALUES(6,2131,'male',28,'北京师范大学',3.3);
解题答案:
select
count(gender) male_num,
round(avg(gpa),1) avg_gpa
from user_profile GROUP BY gender having gender ='male'
3. 分组计算练习题
题目:现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量.
建表语句:
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`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);
解题答案:
SELECT gender,university,count(gender) as user_num,
avg(active_days_within_30) as avg_active_days,avg(question_cnt) as avg_question_cnt
from user_profile
GROUP by university,gender;
4. 分组过滤练习题
题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校.
建表语句:
drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`gpa` float,
`active_days_within_30` int ,
`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);
解题答案:
SELECT
university,
avg( question_cnt ) AS avg_question_cnt,
avg( answer_cnt ) AS avg_answer_cnt
FROM
user_profile GROUP BY university
HAVING
avg_question_cnt < 5 OR avg_answer_cnt < 20
5. 如何让刷题变得更高效?
最近很多学了基础的小伙伴问我该怎么提升编程水平?学了基础该上哪刷题?明明学了很多,做项目却不知道怎么上手,其实这就是练得太少,只注重了学,却忽视了刷题,只有不断练习才能提高和巩固编程思维和能力!
链接地址:牛客网 | SQL刷题篇,废话少说速度上号!!!
边栏推荐
- ArcEngine (2) loading the map document
- Charles packet capture tool learning record
- Evaluate: A detailed introduction to the introduction of huggingface evaluation indicator module
- ArcEngine(四)MapControl_OnMouseDown的使用
- 手把手教你如何自制目标检测框架(从理论到实现)
- 浅析什么是伪类和伪元素?伪类和伪元素的区别解析
- sqlite 日期字段加一天
- Add Modulo 10 (规律循环节,代码实现细节)
- CSP-S2019 Day2
- 并发之ReentrantLock
猜你喜欢
0day_Topsec上网行为管理RCE
BOM系列之localStorage
Mysql如何对两张表的相同字段,同时查询两张数据表
【Kaggle实战】泰坦尼克号生存人数预测(从零到提交到Kaggle再到模型的保存与恢复)
The Transformer, BERT, GPT paper intensive reading notes
redis键值出现 xacxedx00x05tx00&的解决方法
数据监控平台
10 minutes to get you started chrome (Google) browser plug-in development
【论文笔记】基于动作空间划分的MAXQ自动分层方法
图解Kernel Device Tree(设备树)的使用
随机推荐
机器学习(公式推导与代码实现)--sklearn机器学习库
MySQL2
多线程下的单例模式
AI mid-stage sequence labeling task: three data set construction process records
长短期记忆网络 LSTM
阿里云·短信发送
进程的创建
开发工具之版本控制
ArcEngine(八)用IWorkspaceFactory加载矢量数据
Arduino框架下对ESP32 NVS非易失性存储解读以及应用示例
积分商城系统设计
获取JDcookie的方法
"Swordsman Offer" brush questions print from 1 to the largest n digits
合并两个有序链表
并发之多把锁和活跃性
审批流设计
dflow入门5——Big step & Big parameter
计算机网络之网络安全
Pop Harmony Basics Big Notes
Nacos使用实践