SQL语法

基础查询

SQL1 查询所有列

题目:现在运营想要查看用户信息表中所有的数据,请你取出相应结果
示例:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据示例,你的查询应返回以下结果:
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 Zhejiang
5 5432 male 25 山东大学 Shandong
示例1
输出:
1|2138|male|21|北京大学|BeiJing
2|3214|male|None|复旦大学|Shanghai
3|6543|female|20|北京大学|BeiJing
4|2315|female|23|浙江大学|ZheJiang
5|5432|male|25|山东大学|Shandong

select*from 
user_profile

SQL2 查询多列

描述
题目:现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,请你取出相应数据
示例:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 Zhejiang
5 5432 male 25 山东大学 Shandong
根据示例,你的查询应返回以下结果
device_id gender age university
2138 male 21 北京大学
3214 male
复旦大学
6543 female 20 北京大学
2315 female 23 浙江大学
5432 male 25 山东大学
示例1
输出:
2138|male|21|北京大学
3214|male|None|复旦大学
6543|female|20|北京大学
2315|female|23|浙江大学
5432|male|25|山东大学

SELECT 
    device_id, 
    gender, 
    age, 
    university 
FROM
    user_profile

简单处理查询结果

SQL3 查询结果去重

描述
题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。
示例:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据示例,你的查询应返回以下结果:
university
北京大学
复旦大学
浙江大学
山东大学
示例1
输出:
北京大学
复旦大学
浙江大学
山东大学

distinct去重函数

SELECT
 DISTINCT university 
 FROM 
 user_profile

SQL4 查询结果限制返回行数

描述
题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。
示例:
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据输入,你的查询应返回以下结果:
device_id
2138
3214
示例1
输出:
2138
3214

SELECT device_id
FROM user_profile
LIMIT 0,2

SQL5 将查询后的列重新命名

描述
题目:现在你需要查看前2个用户明细设备ID数据,并将列名改为 ‘user_infos_example’,,请你从用户信息表取出相应结果。
示例:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据示例,你的查询应返回以下结果:
user_infos_example
2138
3214
示例1
输出:
2138
3214

SELECT device_id AS user_infos_example
FROM user_profile
LIMIT 0,2

条件查询

SQL36 查找后排序

描述
题目:现在运营想要取出用户信息表中的用户年龄,请取出相应数据,并按照年龄升序排序。
示例:user_profile
id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male 23 复旦大学 4
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
6 2131 male 28 北京师范大学 3.3
根据示例,你的查询应返回以下结果:
device_id age
6534 20
2138 21
3214 23
2315 23
5432 25
2131 28
示例1
输出:
6543|20
2138|21
3214|23
2315|23
5432|25
2131|28

select
 device_id,age 
 from 
 user_profile
  order by 
  age asc 
  MySQL的排序关键字的order by,其默认是升序排序,
  如果是by后面加上desc,则是降序排序,
  默认是asc(升序)使用用法为: ```select 查询内容 from 表名 order by 排序的内容 .

SQL37 查找后多列排序

描述
题目:现在运营想要取出用户信息表中的年龄和gpa数据,并先按照gpa升序排序,再按照年龄升序排序输出,请取出相应数据。
用户信息表:user_profile
id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male 23 复旦大学 4
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
6 2131 male 28 北京师范大学 3.3
你的查询应返回以下结果:
device_id gpa age
6534 3.2 20
2131 3.3 28
2138 3.4 21
2315 3.6 23
5432 3.8 25
3214 4 23
示例1
输出:
6543|3.200|20
2131|3.300|28
2138|3.400|21
2315|3.600|23
5432|3.800|25
3214|4.000|23

select 
device_id,gpa,age 
from 
user_profile 
 order by gpa

SQL38 查找后降序排列

描述
题目:现在运营想要取出用户信息表中对应的数据,并先按照gpa、年龄降序排序输出,请取出相应数据。
示例 user_profile:
id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male 23 复旦大学 4
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
6 2131 male 28 北京师范大学 3.3
根据示例,你的查询应返回以下结果:
device_id gpa age
3214 4 23
5432 3.8 25
2315 3.6 23
2138 3.4 21
2131 3.3 28
6543 3.2 20
示例1
输出:
3214|4.0|23
5432|3.8|25
2315|3.6|23
2138|3.4|21
2131|3.3|28
6543|3.2|20

SELECT
    device_id,
    gpa,
    age
FROM
    user_profile
ORDER BY
    gpa DESC,
    age DESC;

SQL6 查找学校是北大的学生信息

描述
题目:现在运营想要筛选出所有北京大学的学生进行用户调研,请你从用户信息表中取出满足条件的数据,结果返回设备id和学校。

示例:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据示例,你的查询应返回以下结果:
device_id university
2138 北京大学
6543 北京大学
示例1
输入:
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,
province varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’);
复制
输出:
2138|北京大学
6543|北京大学

select 
device_id,university 
from user_profile
where university='北京大学'

SQL7 查找年龄大于24岁的用户信息

描述
题目:现在运营想要针对24岁以上的用户开展分析,请你取出满足条件的设备ID、性别、年龄、学校。
用户信息表:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female
23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据输入,你的 查询应返回以下结果:
device_id gender age university
5432 male 25 山东大学
示例1
输入:
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,
province varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’);
复制
输出:
5432|male|25|山东大学

select
device_id,gender,age,university 
from user_profile
where age>24

SQL8 查找某个年龄段的用户信息

描述
题目:现在运营想要针对20岁及以上且23岁及以下的用户开展分析,请你取出满足条件的设备ID、性别、年龄。
用户信息表:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据输入,你的查询应返回以下结果:
device_id gender age
2138 male 21
6543 female 20
2315 female 23
示例1
输入:
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,
province varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’);
输出:
2138|male|21
6543|female|20
2315|female|23

select
device_id,gender,age
from user_profile 
where age>=20 and age<=23

SQL9 查找除复旦大学的用户信息

描述
题目:现在运营想要查看除复旦大学以外的所有用户明细,请你取出相应数据
示例:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据输入,你的查询应返回以下结果:
device_id gender age university
2138 male 21 北京大学
6543 female 20 北京大学
2315 female 23 浙江大学
5432 male 25 山东大学
示例1
输入:
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,
province varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’);
输出:
2138|male|21|北京大学
6543|female|20|北京大学
2315|female|23|浙江大学
5432|male|25|山东大学

select 
device_id,gender,age,university
from user_profile
where university != '复旦大学'

SQL10 用where过滤空值练习

描述
题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。
示例:user_profile
id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male
复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong
根据输入,你的 查询应返回以下结果:
device_id gender age university
2138 male 21 北京大学
6543 female 20 北京大学
2315 female 23 浙江大学
5432 male 25 山东大学
示例1
输入:
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,
province varchar(32) NOT NULL);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’);
输出:
2138|male|21|北京大学
6543|female|20|北京大学
2315|female|23|浙江大学
5432|male|25|山东大学

select 
device_id,gender,age,university 
from user_profile 
where age!=' '

高级操作符

SQL11 高级操作符练习(1)

描述
题目:现在运营想要找到男性且GPA在3.5以上(不包括3.5)的用户进行调研,请你取出相关数据。
示例:user_profile
id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male
复旦大学 4.0
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
根据输入,你的查询应返回以下结果:
device_id gender age university gpa
3214 male
复旦大学 4.0
5432 male 25 山东大学 3.8
示例1
输入:
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,
province varchar(32) NOT NULL,
gpa float);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’,3.4);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’,4.0);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’,3.2);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’,3.6);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’,3.8);
复制
输出:
3214|male|None|复旦大学|4.0
5432|male|25|山东大学|3.8

select
device_id,gender,age,university,gpa 
from user_profile 
where gpa>3.5 and gender='male'

SQL12 高级操作符练习(2)

描述
题目:现在运营想要找到学校为北大或GPA在3.7以上(不包括3.7)的用户进行调研,请你取出相关数据(使用OR实现)
示例:user_profile
id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male
复旦大学 4.0
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
根据输入,你的查询应返回以下结果:
device_id gender age university gpa
2138 male 21 北京大学 3.4
3214 male
复旦大学 4.0
6543 female 20 北京大学 3.2
5432 male 25 山东大学 3.8
示例1
输入:
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,
province varchar(32) NOT NULL,
gpa float);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’,3.4);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’,4.0);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’,3.2);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’,3.6);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’,3.8);
输出:
2138|male|21|北京大学|3.4
3214|male|None|复旦大学|4.0
6543|female|20|北京大学|3.2
5432|male|25|山东大学|3.8

select device_id,gender,age,university,gpa 
from user_profile 
where university='北京大学'|| gpa>3.7

SQL13 Where in 和Not in

描述
题目:现在运营想要找到学校为北大、复旦和山大的同学进行调研,请你取出相关数据。
示例:user_profile
id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male
复旦大学 4.0
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
根据输入,你的查询应返回以下结果:
device_id gender age university gpa
2138 male 21 北京大学 3.4
3214 male
复旦大学 4.0
6543 female 20 北京大学 3.2
5432 male 25 山东大学 3.8
示例1
输入:
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,
province varchar(32) NOT NULL,
gpa float);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’,3.4);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’,4.0);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’,3.2);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’,3.6);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’,3.8);
输出:
2138|male|21|北京大学|3.4
3214|male|None|复旦大学|4.0
6543|female|20|北京大学|3.2
5432|male|25|山东大学|3.8

select device_id ,gender, age, university, gpa
from user_profile
where university IN ("北京大学","复旦大学","山东大学");

SQL14 操作符混合运用

描述
题目:现在运营想要找到gpa在3.5以上(不包括3.5)的山东大学用户 或 gpa在3.8以上(不包括3.8)的复旦大学同学进行用户调研,请你取出相应数据
示例:user_profile
id device_id gender age university province gpa
1 2138 male 21 北京大学 BeiJing 3.4
2 3214 male NULL 复旦大学 Shanghai 4
3 6543 female 20 北京大学 BeiJing
3.2
4 2315 female 23 浙江大学 ZheJiang 3.6
5 5432 male 25 山东大学 Shandong 3.8
根据输入,你的查询应返回以下结果:(该题对于小数点后面的0不需要计算与统计,后台系统会统一输出小数点后面1位)
device_id gender age university gpa
3214 male NULL 复旦大学 4
5432 male 25 山东大学 3.8
示例1
输入:
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,
province varchar(32) NOT NULL,
gpa float);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,‘BeiJing’,3.4);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,‘Shanghai’,4.0);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,‘BeiJing’,3.2);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,‘ZheJiang’,3.6);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,‘Shandong’,3.8);
输出:
3214|male|None|复旦大学|4.0
5432|male|25|山东大学|3.8

select device_id ,gender, age, university, gpa
from user_profile
where gpa>3.5 && university='山东大学'||gpa>3.8 && university='复旦大学'

SQL15 查看学校名称中含北京的用户

描述
题目:现在运营想查看所有大学中带有北京的用户的信息,请你取出相应数据。
示例:用户信息表:user_profile
id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male
复旦大学 4.0
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
6 2131 male 28 北京师范大学 3.3
根据示例,你的查询应返回如下结果:
device_id age university
2138 21 北京大学
6543 20 北京大学
2131 28 北京师范大学
示例1
输入:
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);
输出:
2138|21|北京大学
6543|20|北京大学
2131|28|北京师范大学

select device_id,age,university 
from user_profile
where university like '%北京%'
like表示模糊搜索,%表示不确定北京前后各有几个字

高级查询

SQL16 查找GPA最高值

描述
题目:运营想要知道复旦大学学生gpa最高值是多少,请你取出相应数据
示例:某user_profile表如下:
id device_id gender age university gpa
1 2234 male 21 北京大学 3.2
2 2235 male NULL 复旦大学 3.8
3 2236 female 20 复旦大学 3.5
4 2237 female 23 浙江大学 3.3
5 2238 male 25 复旦大学 3.1
6 2239 male 25 北京大学 3.6
7 2240 male NULL 清华大学 3.3
8 2241 female NULL 北京大学 3.7
根据输入,你的查询应返回以下结果,结果保留到小数点后面1位(1位之后的四舍五入):
gpa
3.8
示例1
输入:
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);
输出:
3.8

select max(gpa) 
from user_profile
where university='复旦大学'

SQL17 计算男生人数以及平均GPA

描述
题目:现在运营想要看一下男性用户有多少人以及他们的平均gpa是多少,用以辅助设计相关活动,请你取出相应数据。
示例:user_profile
id device_id gender age university gpa
1 2138 male 21 北京大学 3.4
2 3214 male
复旦大学 4.0
3 6543 female 20 北京大学 3.2
4 2315 female 23 浙江大学 3.6
5 5432 male 25 山东大学 3.8
6 2131 male 28 北京师范大学 3.3
根据输入,你的查询应返回以下结果,结果保留到小数点后面1位(1位之后的四舍五入):
male_num avg_gpa
4 3.6
示例1
输入:
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);
输出:
4|3.6

一种解法

select 
count(gender) as male_num,ROUND(avg(gpa),1)as avg_gpa 
from user_profile 
where gender='male'
使用round(column,1)函数进行平均数的四舍五入,保留1位小数

二种解法

select 
    count(id) male_num,avg(gpa) avg_gpa 
from 
    user_profile 
group by 
    gender 
having 
    gender='male'

SQL18 分组计算练习题

描述
题目:现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。
用户信息表:user_profile
30天内活跃天数字段(active_days_within_30)
发帖数量字段(question_cnt)
回答数量字段(answer_cnt)
id device_id gender age university gpa active_days_within_30
question_cnt
answer_cnt
1 2138 male 21 北京大学 3.4 7 2 12
2 3214 male
复旦大学 4.0 15 5 25
3 6543 female 20 北京大学 3.2 12 3 30
4 2315 female 23 浙江大学 3.6 5 1 2
5 5432 male 25 山东大学 3.8 20 15 70
6 2131 male 28 山东大学 3.3 15 7 13
7 4321 male 26 复旦大学 3.6 9 6 52
第一行表示: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位小数之后的四舍五入:
gender university user_num avg_active_day avg_question_cnt
male 北京大学 1 7.0 2.0
male复旦大学 2 12.0 5.5
female 北京大学 1 12.0 3.0
female浙江大学 1 5.0 1.0
male山东大学 2 17.5 11.0
解释:
第一行表示:北京大学的男性用户个数为1,平均活跃天数为7天,平均发帖量为2
。。。
最后一行表示:山东大学的男性用户个数为2,平均活跃天数为17.5天,平均发帖量为11

select gender,university,
count(gender) as user_num,
round(avg(active_days_within_30),1) as avg_active_day,
round(avg(question_cnt),1) as avg_question_cnt
from user_profile
group by 
gender,university

SQL19 分组过滤练习题

描述
题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。
示例:user_profile
id device_id gender age university gpa active_days_within_30
question_cnt
answer_cnt
1 2138 male 21 北京大学 3.4 7 2 12
2 3214 male 复旦大学 4.0 15 5 25
3 6543 female 20 北京大学 3.2 12 3 30
4 2315 female 23 浙江大学 3.6 5 1 2
5 5432 male 25 山东大学 3.8 20 15 70
6 2131 male 28 山东大学 3.3 15 7 13
7 4321 female 26 复旦大学 3.6 9 6 52
第一行表示:id为1的用户的常用信息为使用的设备id为2138,性别为男,年龄21岁,北京大学,gpa为3.4在过去的30天里面活跃了7天,发帖数量为2,回答数量为12
。。。
最后一行表示:id为7的用户的常用信息为使用的设备id为4321,性别为男,年龄26岁,复旦大学,gpa为3.6在过去的30天里面活跃了9天,发帖数量为6,回答数量为52
根据示例,你的查询应返回以下结果,请你保留3位小数(系统后台也会自动校正),3位之后四舍五入:
university avg_question_cnt avg_answer_cnt
北京大学 2.5000 21.000
浙江大学 1.000 2.000
解释: 平均发贴数低于5的学校或平均回帖数小于20的学校有2个
属于北京大学的用户的平均发帖量为2.500,平均回答数量为21.000
属于浙江大学的用户的平均发帖量为1.000,平均回答数量为2.000
示例1
输入:
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);
输出:
university|avg_question_cnt|avg_answer_cnt
北京大学|2.500|21.000
浙江大学|1.000|2.000

select university,
round(avg(question_cnt),3) as avg_question_cnt,
round(avg(answer_cnt),3) as avg_answer_cnt
from user_profile
group by university
HAVING avg_question_cnt<5 or avg_answer_cnt<20

SQL20 分组排序练习题

描述
题目:现在运营想要查看不同大学的用户平均发帖情况,并期望结果按照平均发帖情况进行升序排列,请你取出相应数据。
示例:user_profile
id device_id gender age university gpa active_days_within_30
question_cnt
answer_cnt
1 2138 male 21 北京大学 3.4 7 2 12
2 3214 male
复旦大学 4.0 15 5 25
3 6543 female 20 北京大学 3.2 12 3 30
4 2315 female 23 浙江大学 3.6 5 1 2
5 5432 male 25 山东大学 3.8 20 15 70
6 2131 male 28 山东大学 3.3 15 7 13
7 4321 female 26 复旦大学 3.6 9 6 52
第一行表示:id为1的用户的常用信息为使用的设备id为2138,性别为男,年龄21岁,北京大学,gpa为3.4在过去的30天里面活跃了7天,发帖数量为2,回答数量为12
。。。
最后一行表示:id为7的用户的常用信息为使用的设备id为4321,性别为男,年龄26岁,复旦大学,gpa为3.6在过去的30天里面活跃了9天,发帖数量为6,回答数量为52
根据示例,你的查询应返回以下结果:
university avg_question_cnt
浙江大学 1.0000
北京大学 2.5000
复旦大学 5.5000
山东大学 11.0000
示例1
输入:
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 int ,
answer_cnt int
);
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);
输出:
浙江大学|1.0000
北京大学|2.5000
复旦大学|5.5000
山东大学|11.0000

一种解法

select university,
round(avg(question_cnt),4) as avg_question_cnt
from user_profile
group by university
order by avg_question_cnt

二种解法

select university,
round(avg(question_cnt),4) as avg_question_cnt
from user_profile
group by university
order by avg_question_cnt asc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值