SQL日常练习1-基础篇-牛客网

Posted EbowTang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL日常练习1-基础篇-牛客网相关的知识,希望对你有一定的参考价值。

本文章目的:

在于对SQL系统化学习后,进行:
1,日常练习,巩固;
2,加深对SQL知识体系;
3,总结SQL相关知识;
4,或者某有朝一日能快速捡起相关SQL知识。

5,同时附带有KES数据库上的验证结果
长期更新和总结。。。。。。无截止时间

以下均是牛客网练习题-mysql数据库测试结果:

目录

本文章目的:

SQL1 查询所有列

表及其创建示例(后续没说明均是此表)

SQL2 查询多列

SQL3 查询结果去重

SQL4 查询结果限制返回行数

SQL5 将查询后的列重新命名

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

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

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

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

SQL10 用where过滤空值练习

SQL11 高级操作符练习(1)

SQL12 高级操作符练习(2)

SQL13 Where in 和Not in

SQL14 操作符混合运用

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

SQL16 查找GPA最高值

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

附录:KingbaseES数据库测试验证结果:


SQL1 查询所有列

题目:现在运营想要查看用户信息表中所有的数据,请你取出相应结果

示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据示例,你的查询应返回以下结果:

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学Zhejiang
55432male25山东大学Shandong

表及其创建示例(后续没说明均是此表及其衍生)

输入:

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');
select * from user_profile;

或者

select 
  id,device_id,
  gender,
  age,
  university,province
from user_profile;

SQL2 查询多列

题目:现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,请你取出相应数据

示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学Zhejiang
55432male25山东大学Shandong

根据示例,你的查询应返回以下结果

device_idgenderageuniversity
2138male21北京大学
3214male复旦大学
6543female20北京大学
2315female23浙江大学
5432male25山东大学
select device_id,gender,age,university 
from user_profile;

SQL3 查询结果去重

题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。

示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据示例,你的查询应返回以下结果:

university
北京大学
复旦大学
浙江大学
山东大学
select distinct university
from user_profile;
或者
SELECT university 
from user_profile 
GROUP BY university;

SQL4 查询结果限制返回行数

题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。

示例:

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据输入,你的查询应返回以下结果:

device_id
2138
3214
select device_id from user_profile limit 2;
select device_id from user_profile limit 0,2;
select device_id from user_profile limit 2 offset 0;
select device_id from user_profile where id in(1,2);
select device_id from user_profile where id <=2;
select device_id from user_profile where id=1 or id=2;

SQL5 将查询后的列重新命名

题目:现在你需要查看前2个用户明细设备ID数据,并将列名改为 'user_infos_example',,请你从用户信息表取出相应结果。

示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据示例,你的查询应返回以下结果:

user_infos_example
2138
3214
select device_id as user_infos_example 
from user_profile 
where id < 3
或者
select device_id as user_infos_example 
from user_profile 
where id in (1,2)
或者
select device_id as user_infos_example 
from user_profile 
limit 2

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

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

示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据示例,你的查询应返回以下结果:

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

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

题目:现在运营想要针对24岁以上的用户开展分析,请你取出满足条件的设备ID、性别、年龄、学校。

用户信息表:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据输入,你的 查询应返回以下结果:

device_idgenderageuniversity
5432male25山东大学
select device_id,gender,age, university
from user_profile
where age > 24

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

题目:现在运营想要针对20岁及以上且23岁及以下的用户开展分析,请你取出满足条件的设备ID、性别、年龄。

用户信息表:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据输入,你的查询应返回以下结果:

device_idgenderage
2138male21
6543female20
2315female23
select device_id,gender,age
from user_profile
where age > 19 and age < 24

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

题目:现在运营想要查看除复旦大学以外的所有用户明细,请你取出相应数据

示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据输入,你的查询应返回以下结果:

device_idgenderageuniversity
2138male21北京大学
6543female20北京大学
2315female23浙江大学
5432male25山东大学
select device_id,gender,age,university
from user_profile
#where university != '复旦大学'
#where university not like '复旦大学'
# where university not in ('复旦大学')

SQL10 用where过滤空值练习

题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。

示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据输入,你的 查询应返回以下结果:

device_idgenderageuniversity
2138male21北京大学
6543female20北京大学
2315female23浙江大学
5432male25山东大学
select device_id,gender,age,university
from user_profile
Where age is not null
--Where age != 'null' --测试不通过,mysql可以
--Where age <> 'null' --测试不通过,mysql可以

SQL11 高级操作符练习(1)

题目:现在运营想要找到男性且GPA在3.5以上(不包括3.5)的用户进行调研,请你取出相关数据。

示例:user_profile

iddevice_idgenderageuniversitygpa
12138male21北京大学3.4
23214male复旦大学4.0
36543female20北京大学3.2
42315female23浙江大学3.6
55432male25山东大学3.8

根据输入,你的查询应返回以下结果:

device_idgenderageuniversitygpa
3214male复旦大学4.0
5432male25山东大学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

iddevice_idgenderageuniversitygpa
12138male21北京大学3.4
23214male复旦大学4.0
36543female20北京大学3.2
42315female23浙江大学3.6
55432male25山东大学3.8

根据输入,你的查询应返回以下结果:

device_idgenderageuniversitygpa
2138male21北京大学3.4
3214male复旦大学4.0
6543female20北京大学3.2
5432male25山东大学3.8
题目:现在运营想要找到学校为北大或GPA在3.7以上(不包括3.7)的用户进行调研,请你取出相关数据(使用OR实现)
select device_id,gender,age,university,gpa
from user_profile
where gpa > 3.7 or university = '北京大学';

SQL13 Where in 和Not in

题目:现在运营想要找到学校为北大、复旦和山大的同学进行调研,请你取出相关数据。

示例:user_profile

iddevice_idgenderageuniversitygpa
12138male21北京大学3.4
23214male复旦大学4.0
36543female20北京大学3.2
42315female23浙江大学3.6
55432male25山东大学3.8

根据输入,你的查询应返回以下结果:

device_idgenderageuniversitygpa
2138male21北京大学3.4
3214male复旦大学4.0
6543female20北京大学3.2
5432male25山东大学3.8
--13,题目:现在运营想要找到学校为北大、复旦和山大的同学进行调研,请你取出相关数据。,
select device_id,gender,age,university,gpa
from user_profile
where university = '北京大学' or university = '复旦大学' or university = '山东大学';
--where university in('北京大学','复旦大学','山东大学')

SQL14 操作符混合运用

题目:现在运营想要找到gpa在3.5以上(不包括3.5)的山东大学用户 或 gpa在3.8以上(不包括3.8)的复旦大学同学进行用户调研,请你取出相应数据

示例:user_profile

iddevice_idgenderageuniversityprovincegpa
12138male21北京大学BeiJing3.4
23214maleNULL复旦大学Shanghai4
36543female20北京大学BeiJing3.2
42315female23浙江大学ZheJiang3.6
55432male25山东大学Shandong3.8

根据输入,你的查询应返回以下结果:(该题对于小数点后面的0不需要计算与统计,后台系统会统一输出小数点后面1位)

device_idgenderageuniversitygpa
3214maleNULL复旦大学4
5432male25山东大学3.8
--14,题目:现在运营想要找到gpa在3.5以上(不包括3.5)的山东大学用户 或 gpa在3.8以上(不包括3.8)的复旦大学同学进行用户调研,请你取出相应数据
select device_id,gender,age,university,gpa
from user_profile
where (university = '山东大学' and gpa > 3.5) or (university = '复旦大学' and gpa > 3.8);

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

题目:现在运营想查看所有大学中带有北京的用户的信息,请你取出相应数据。

示例:用户信息表:user_profile

iddevice_idgenderageuniversitygpa
12138male21北京大学3.4
23214male复旦大学4.0
36543female20北京大学3.2
42315female23浙江大学3.6
55432male25山东大学3.8
62131male28北京师范大学3.3

根据示例,你的查询应返回如下结果:

device_idageuniversity
213821北京大学
654320北京大学
213128北京师范大学
select device_id,age,university
from user_profile
where university like '北京%';

SQL16 查找GPA最高值

题目:运营想要知道复旦大学学生gpa最高值是多少,请你取出相应数据

示例:某user_profile表如下:

iddevice_idgenderageuniversitygpa
12234male21北京大学3.2
22235maleNULL复旦大学3.8
32236female20复旦大学3.5
42237female23浙江大学3.3
52238male25复旦大学3.1
62239male25北京大学3.6
72240maleNULL清华大学3.3
82241femaleNULL北京大学3.7

根据输入,你的查询应返回以下结果,结果保留到小数点后面1位(1位之后的四舍五入):

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

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

题目:现在运营想要看一下男性用户有多少人以及他们的平均gpa是多少,用以辅助设计相关活动,请你取出相应数据。

示例:user_profile

iddevice_idgenderageuniversitygpa
12138male21北京大学3.4
23214male复旦大学4.0
36543female20北京大学3.2
42315female23浙江大学3.6
55432male25山东大学3.8
62131male28北京师范大学3.3

根据输入,你的查询应返回以下结果,结果保留到小数点后面1位(1位之后的四舍五入):

male_numavg_gpa
43.6
select count(gender) as male_num,round(avg(gpa),1) as avg_gpa
from user_profile
where gender='male';

附录:KingbaseES数据库测试验证结果:

使用例子有一点区别,相同的语句进行测试验证输出结果符合预期,和上面的例子一一对应

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);
INSERT INTO user_profile VALUES(6,2131,'male',28,'北京师范大学','BeiJing',3.3);
INSERT INTO user_profile VALUES(7,2240,'male',null,'清华大学','BeiJing',3.3);
INSERT INTO user_profile VALUES(8,2241,'female',null,'北京大学','BeiJing',3.7);

select * from user_profile;

--1,题目:现在运营想要查看用户信息表中所有的数据,请你取出相应结果
select * from user_profile;

--2,题目:现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,请你取出相应数据
select device_id,gender,age,university 
from user_profile;

--3,题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。
select distinct university
from user_profile;
--或者分组查询
SELECT university 
from user_profile 
GROUP BY university;

--4,题目:现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。
select device_id from user_profile limit 2;
select device_id from user_profile limit 0,2;
select device_id from user_profile limit 2 offset 0;
select device_id from user_profile where id in(1,2);
select device_id from user_profile where id <=2;
select device_id from user_profile where id=1 or id=2;

--5,题目:现在你需要查看前2个用户明细设备ID数据,并将列名改为 'user_infos_example',,请你从用户信息表取出相应结果。
select device_id as user_infos_example 
from user_profile 
where id < 3;
--或者
select device_id as user_infos_example 
from user_profile 
where id in (1,2);
--或者
select device_id as user_infos_example 
from user_profile 
limit 2  offset 0;

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

--7,题目:现在运营想要针对24岁以上的用户开展分析,请你取出满足条件的设备ID、性别、年龄、学校。
select device_id,gender,age, university
from user_profile
where age > 24

--8,题目:现在运营想要针对20岁及以上且23岁及以下的用户开展分析,请你取出满足条件的设备ID、性别、年龄。
select device_id,gender,age
from user_profile
where age > 19 and age < 24

--9,题目:现在运营想要查看除复旦大学以外的所有用户明细,请你取出相应数据
select device_id,gender,age,university
from user_profile
--where university != '复旦大学'
where university not like '复旦大学'

--10,题目:现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,
--请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。
select device_id,gender,age,university
from user_profile
Where age is not null
--Where age != 'null' --测试不通过,mysql可以
--Where age <> 'null' --测试不通过,mysql可以

--11,题目:现在运营想要找到男性且GPA在3.5以上(不包括3.5)的用户进行调研,请你取出相关数据。
select device_id,gender,age,university,gpa
from user_profile
where gpa > 3.5 and gender = 'male';

--12,题目:现在运营想要找到学校为北大或GPA在3.7以上(不包括3.7)的用户进行调研,请你取出相关数据(使用OR实现),
select device_id,gender,age,university,gpa
from user_profile
where gpa > 3.7 or university = '北京大学';

--13,题目:现在运营想要找到学校为北大、复旦和山大的同学进行调研,请你取出相关数据。,
select device_id,gender,age,university,gpa
from user_profile
where university = '北京大学' or university = '复旦大学' or university = '山东大学';
--where university in('北京大学','复旦大学','山东大学')

--14,题目:现在运营想要找到gpa在3.5以上(不包括3.5)的山东大学用户 或 gpa在3.8以上(不包括3.8)的复旦大学同学进行用户调研,请你取出相应数据
select device_id,gender,age,university,gpa
from user_profile
where (university = '山东大学' and gpa > 3.5) or (university = '复旦大学' and gpa > 3.8);

--15,题目:现在运营想查看所有大学中带有北京的用户的信息,请你取出相应数据。
select device_id,age,university
from user_profile
where university like '北京%'; --%通配符,后面可以跟0-N字符

--16,题目:运营想要知道复旦大学学生gpa最高值是多少,请你取出相应数据
select max(gpa) from user_profile
where university = '北京大学'

--17,题目:现在运营想要看一下男性用户有多少人以及他们的平均gpa是多少,用以辅助设计相关活动,请你取出相应数据。
select count(gender) as male_num,round(avg(gpa),1) as avg_gpa
from user_profile
where gender='male';

以上是关于SQL日常练习1-基础篇-牛客网的主要内容,如果未能解决你的问题,请参考以下文章

SQL日常练习2-进阶篇-牛客网

SQL日常练习-牛客网

数据库练习题(牛客网sql入门篇部分)

牛客网专题SQL206 获取每个部门中当前员工薪水最高的相关信息

SQL练习题-牛客网

SQL练习题-牛客网