个人主页:@编程ID
个人简介:大家好,我是编程ID,一个想要与大家共同进步的程序员儿如果各位哥哥姐姐在准备面试,找工作,刷算法,前后端编程题选择题都有,可以使用我找工作前用的刷题神器哦!刷题神器点这里哟
欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,望能帮到各位想要找工作或者提高自己的小伙伴儿们,如果有什么需要改进的地方,还请大佬不吝赐教
基础查询
1、现在运营想要查看用户信息表中所有的数据,请你取出相应结果(1-6题共用一个表)
2、现在运营同学想要用户的设备id对应的性别、年龄和学校的数据,请你取出相应数据
3、现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。
4、现在运营只需要查看前2个用户明细设备ID数据,请你从用户信息表 user_profile 中取出相应结果。
5、现在你需要查看前2个用户明细设备ID数据,并将列名改为 ‘user_infos_example’,请你从用户信息表取出相应结果。
6、现在运营想要筛选出所有北京大学的学生进行用户调研,请你从用户信息表中取出满足条件的数据,结果返回设备id和学校。
建表语句:(最好能根据上表自己写出来,对于初级的笔试很可能会有建表的题写语句)
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');
第一题答案
selectid,device_id,gender,age,university,provincefrom user_profile
或者
select*from user_profile
实际应用中一般写列名,很少用*号。select 表列名 from 表名
第二题答案
SELECT device_id,gender,age,university from user_profile
第三题答案
二种方式
1.distinct 关键字
select distinct university from user_profiledistinct去重,放在列的前面使用。
2.分组SELECT
universityfrom user_profilegroup by university以分组来筛选出去重的结果
第四题答案
select device_id from user_profile limit 0,2---运行效率更高
select device_id from user_profile limit 2 ---运行效率低
也可结合 limit offset: 一起使用时,limit表示要取的数量,offset表示跳过的数量
select device_id from user_profile limit 2 offset 0 // 跳过0条,从第一条数据开始取,取两条数据 ---运行效率中
第五题答案
select device_id as user_infors_example from user_profile limit 0,2;
这里主要是用到了 起别名关键字 as 以及组合限制查询 limit 索引,个数
其中as可以省略,索引为0可以省略
select device_id user_infors_example from user_profile limit 2;
第六题答案
SELECT device_id,university from user_profile where university='北京大学';
条件查询
7、现在运营想要取出用户信息表中的用户年龄,请取出相应数据,并按照年龄升序排序。
8、现在运营想要取出用户信息表中的年龄和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',23,'复旦大学',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 device_id,age FROM user_profile ORDER BY age ASC; 结尾加 ASC是升序,不写也行因为默认升序。
#SELECT device_id,age FROM user_profile ORDER BY age desc; 结尾加 desc 是降序。
SELECT device_id,gpa,age from user_profile order by gpa,age;默认以升序排列
SELECT device_id,gpa,age from user_profile order by gpa,age asc;
SELECT device_id,gpa,age from user_profile order by gpa asc,age asc;
基础操作符
9、现在运营想要筛选出所有北京大学的学生进行用户调研,请你从用户信息表中取出满足条件的数据,结果返回设备id和学校。
10、现在运营想要针对24岁以上的用户开展分析,请你取出满足条件的设备ID、性别、年龄、学校。
用户信息表:user_profile
11、现在运营想要针对20岁及以上且23岁及以下的用户开展分析,请你取出满足条件的设备ID、性别、年龄。
12、现在运营想要查看除复旦大学以外的所有用户明细,请你取出相应数据
13、现在运营想要对用户的年龄分布开展分析,在分析时想要剔除没有获取到年龄的用户,请你取出所有年龄值不为空的用户的设备ID,性别,年龄,学校的信息。
建表语句
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 device_id,university from user_profile where university='北京大学';
#更具需求,首先知道要北京大学的学生,所有用条件university='北京大学'
#然后结果返回设备id和学校, 查询的字段是device_id,university
select device_id,gender,age ,university from user_profile where age >= 24;
第十一题答案
SELECT device_id, gender, age
FROM user_profile
WHERE age>=20&&age<=23;
SELECT device_id, gender, age
FROM user_profile
WHERE age>=20 AND age<=23;
SELECT device_id, gender, age
FROM user_profile
WHERE age BETWEEN 20 AND 23;
SELECT device_id, gender,age,university FROM user_profile WHERE university NOT IN ("复旦大学")
select device_id, gender, age, university from user_profile where university != '复旦大学'
SELECT device_id,gender,age,university FROM user_profile WHERE age IS NOT NUL
高级操作符
14、现在运营想要找到男性且GPA在3.5以上(不包括3.5)的用户进行调研,请你取出相关数据。
15、现在运营想要找到学校为北大或GPA在3.7以上(不包括3.7)的用户进行调研,请你取出相关数据(使用OR实现)
16、现在运营想要找到学校为北大、复旦和山大的同学进行调研,请你取出相关数据。
第十四题答案
SELECT device_id,gender,age,university,gpa FROM user_profile WHERE gender = 'male' AND gpa > 3.5
第十五题答案
SELECT device_id,gender,age,university,gpa FROM user_profile
WHERE university='北京大学' OR gpa > 3.7
第十六题答案
select device_id,gender,age,university,gpa from user_profile
where university in('北京大学','复旦大学','山东大学');
17、现在运营想要找到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
--虽然短,但是执行用时长
select device_id, gender, age, university, gpa from user_profile where device_id in (select device_id from user_profile where gpa>3.5 and university='山东大学') or device_id in (select device_id from user_profile where gpa>3.8 and university='复旦大学')
--复杂的写法,子查询的方式
--运行时间短
18、现在运营想查看所有大学中带有北京的用户的信息,请你取出相应数据。
第十八题答案
SELECT device_id,age,university FROM user_profile
WHERE university LIKE '%北京%'
字符匹配
一般形式为:
列名 [NOT ] LIKE
匹配串中可包含如下四种通配符:
:匹配任意一个字符;
%:匹配0个或多个字符;
[ ]:匹配[ ]中的任意一个字符(若要比较的字符是连续的,则可以用连字符“-”表 达 );
[^ ]:不匹配[ ]中的任意一个字符。
例23.查询学生表中姓‘张’的学生的详细信息。
SELECT * FROM 学生表 WHERE 姓名 LIKE ‘张%’
例24.查询姓“张”且名字是3个字的学生姓名。
SELECT * FROM 学生表 WHERE 姓名 LIKE '张_’
如果把姓名列的类型改为nchar(20),在SQL Server 2012中执行没有结果。原因是姓名列的类型是char(20),当姓名少于20个汉字时,系统在存储这些数据时自动在后边补空格,空格作为一个字符,也参加LIKE的比较。可以用rtrim()去掉右空格。
SELECT * FROM 学生表 WHERE rtrim(姓名) LIKE ‘张__’
例25.查询学生表中姓‘张’、姓‘李’和姓‘刘’的学生的情况。
SELECT * FROM 学生表 WHERE 姓名 LIKE '[张李刘]%’
例26.查询学生表表中名字的第2个字为“小”或“大”的学生的姓名和学号。
SELECT 姓名,学号 FROM 学生表 WHERE 姓名 LIKE ‘_[小大]%’
例27.查询学生表中所有不姓“刘”的学生。
SELECT 姓名 FROM 学生 WHERE 姓名 NOT LIKE '刘%’
例28.从学生表表中查询学号的最后一位不是2、3、5的学生信息。
SELECT * FROM 学生表 WHERE 学号 LIKE ‘%[^235]’
高级查询
计算函数
19、运营想要知道复旦大学学生gpa最高值是多少,请你取出相应数据
第十九题答案
方法1
# select max(gpa) as gpa
# from user_profile
# where university='复旦大学';
# 方法2
select gpa
from user_profile
where university='复旦大学'
order by gpa desc limit 1
20、现在运营想要看一下男性用户有多少人以及他们的平均gpa是多少,用以辅助设计相关活动,请你取出相应数据。
第二十题答案
#问题分解:
#限定条件为 男性用户;
#有多少人,明显是计数,count函数;
#平均gpa,求平均值用avg函数;
select
count(gender) as male_num,
round(avg(gpa), 1) as avg_gpa
from user_profile where gender="male";
分组查询
21、现在运营想要对每个学校不同性别的用户活跃情况和发帖数量进行分析,请分别计算出每个学校每种性别的用户数、30天内平均活跃天数和平均发帖数量。
22、现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。
23、现在运营想要查看不同大学的用户平均发帖情况,并期望结果按照平均发帖情况进行升序排列,请你取出相应数据。
第二十一题答案
select
gender, university,
count(device_id) as user_num,
avg(active_days_within_30) as avg_active_days,
avg(question_cnt) as avg_question_cnt
from user_profile
group by gender, university
第二十二题答案
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
select university,
avg(question_cnt) as avg_question_cnt
from user_profile
group by university
order by avg_question_cnt
多表查询
24、现在运营想要查看所有来自浙江大学的用户题目回答明细情况,请你取出相应数据
第二十四题答案
select qpd.device_id, qpd.question_id, qpd.result
from question_practice_detail as qpd
inner join user_profile as up
on up.device_id=qpd.device_id and up.university='浙江大学'
order by question_id
或者
select device_id, question_id, result
from question_practice_detail
where device_id in (
select device_id from user_profile
where university='浙江大学'
)
order by question_id
25、运营想要了解每个学校答过题的用户平均答题数量情况,请你取出数据。
第二十五题答案
select university,
count(question_id) / count(distinct qpd.device_id) as avg_answer_cnt
from question_practice_detail as qpd
inner join user_profile as up
on qpd.device_id=up.device_id
group by university
26、运营想要计算一些参加了答题的不同学校、不同难度的用户平均答题量,请你写SQL取出相应数据
第二十六题答案
select
university,
difficult_level,
round(count(qpd.question_id) / count(distinct qpd.device_id), 4) as avg_answer_cnt
from question_practice_detail as qpd
left join user_profile as up
on up.device_id=qpd.device_id
left join question_detail as qd
on qd.question_id=qpd.question_id
group by university, difficult_level
结束语
发现非常好用的一个刷题网站!大家一起努力!加油!!!
包含数据库、Java、C++、C、Python、前端等等题目,难度可以自行选择
在线编程出答案,(也可自行查看答案),也有选择题,非常方便
程序员刷题神器网站点击链接注册即可刷题
祝大家早日找到满意的工作!