NowCoder刷题 SQL篇 非技术快速入门
- 01 基础查询
-
- 基础查询
-
- 简单处理查询结果
-
- SQL3 查询结果去重
- SQL4 查询结果限制返回行数
- SQL5 将查询后的列重新命名
- 02 条件查询
-
- 基础操作符
-
- SQL6 查找学校是北大的学生信息
- SQL7 查找年龄大于24岁的用户信息
- SQL8 查找某个年龄段的用户信息
- SQL9 查找除复旦大学的用户信息
- SQL10 用where过滤空值练习
- 高级操作符
-
- SQL11 高级操作符练习(1)
- SQL12 高级操作符练习(2)
- SQL13 Where in 和Not in
- SQL14 操作符混合运用
- SQL15 查看学校名称中含北京的用户
- 03 高级查询
-
- 计算函数
-
- SQL16 查找GPA最高值
- SQL17 计算男生人数以及平均GPA
- 分组查询
-
- SQL18 分组计算练习题
- SQL18 分组计算练习题
- SQL20 分组排序练习题
- 04 多表查询
-
- 子查询
-
- 连接查询
-
- SQL22 统计每个学校的答过题的用户的平均答题数
- SQL23 统计每个学校各难度的用户平均刷题数
- SQL24 统计每个用户的平均刷题数
- 组合查询
-
- 05 必会的常用函数
-
- 条件函数
-
- SQL26 计算25岁以上和以下的用户数量
- SQL27 查看不同年龄段的用户明细
- 日期函数
-
- SQL28 计算用户8月每天的练题数量
- SQL29 计算用户的平均次日留存率
- 文本函数
-
- SQL30 统计每种性别的人数
- SQL31 提取博客URL中的用户名
- SQL32 截取出年龄
- 窗口函数
-
- 06 综合练习
-
- 综合练习
-
- SQL34 统计复旦用户8月练题情况
- SQL35 浙大不同难度题目的正确率
- SQL36 查找后排序
- SQL37 查找后多列排序
- SQL38 查找后降序排列
- SQL39 21年8月份练题总数
- 完结
01 基础查询
基础查询
SQL1 查询所有列
![NowCoder刷题 SQL篇_第1张图片](http://img.e-com-net.com/image/info8/3afa5ae589594e3aa41e8f118266dc40.jpg)
SELECT * FROM user_profile
![NowCoder刷题 SQL篇_第2张图片](http://img.e-com-net.com/image/info8/c183631b776c4df7a81068e147c4337b.jpg)
SQL2 查询多列
![NowCoder刷题 SQL篇_第3张图片](http://img.e-com-net.com/image/info8/c5ac68c6a1c345ac870b422430fe4aa6.jpg)
select device_id, gender, age, university from user_profile
![NowCoder刷题 SQL篇_第4张图片](http://img.e-com-net.com/image/info8/298f037d4a894dcca738b714d8cd4f92.jpg)
简单处理查询结果
SQL3 查询结果去重
![NowCoder刷题 SQL篇_第5张图片](http://img.e-com-net.com/image/info8/0a17fb75883c4c368fce240fdcedc313.jpg)
select distinct(university) from user_profile
![NowCoder刷题 SQL篇_第6张图片](http://img.e-com-net.com/image/info8/8e3daf510dcd494f887143cb075b17e5.jpg)
SQL4 查询结果限制返回行数
![NowCoder刷题 SQL篇_第7张图片](http://img.e-com-net.com/image/info8/6e13d09e0c3147fd8690b0b91adee572.jpg)
select device_id from user_profile limit 2
![NowCoder刷题 SQL篇_第8张图片](http://img.e-com-net.com/image/info8/be65405c402a4bb7ae1f493a0015f97d.jpg)
SQL5 将查询后的列重新命名
![NowCoder刷题 SQL篇_第9张图片](http://img.e-com-net.com/image/info8/c4faacc22a3147d9ac3aa57e9573e257.jpg)
SELECT device_id user_infos_example FROM user_profile LIMIT 2
![NowCoder刷题 SQL篇_第10张图片](http://img.e-com-net.com/image/info8/241a0fc55b42466ea2a863d181840535.jpg)
02 条件查询
基础操作符
SQL6 查找学校是北大的学生信息
![NowCoder刷题 SQL篇_第11张图片](http://img.e-com-net.com/image/info8/edcba1fa641d43ad95afe5498ee769c7.jpg)
SELECT device_id, university FROM user_profile WHERE university = '北京大学'
![NowCoder刷题 SQL篇_第12张图片](http://img.e-com-net.com/image/info8/3ef19a26e34f4bb8ba91ee1757e0080e.jpg)
SQL7 查找年龄大于24岁的用户信息
![NowCoder刷题 SQL篇_第13张图片](http://img.e-com-net.com/image/info8/f8da9e3d18d5420e83ead808dc3d480d.jpg)
SELECT device_id, gender, age, university FROM user_profile WHERE age >= 24
![NowCoder刷题 SQL篇_第14张图片](http://img.e-com-net.com/image/info8/cdcd762e0e2e4c62bc75b1db908afb91.jpg)
SQL8 查找某个年龄段的用户信息
![NowCoder刷题 SQL篇_第15张图片](http://img.e-com-net.com/image/info8/fcd5fa79a7824b319c53c4d75de48284.jpg)
SELECT device_id, gender, age FROM user_profile
WHERE age BETWEEN 20 AND 23
![NowCoder刷题 SQL篇_第16张图片](http://img.e-com-net.com/image/info8/cdf5a9a74db34540813f6b0bc3ef1e2f.jpg)
SQL9 查找除复旦大学的用户信息
![NowCoder刷题 SQL篇_第17张图片](http://img.e-com-net.com/image/info8/12af8216fe3b4790b19f8314a1784333.jpg)
SELECT device_id, gender, age, university FROM user_profile
WHERE university <> '复旦大学'
![NowCoder刷题 SQL篇_第18张图片](http://img.e-com-net.com/image/info8/be7f948cbc894dc2bf4e40c643940d0a.jpg)
SQL10 用where过滤空值练习
![NowCoder刷题 SQL篇_第19张图片](http://img.e-com-net.com/image/info8/e3260c374295472db26b27abb7a565fa.jpg)
SELECT device_id, gender, age, university FROM user_profile
WHERE age IS NOT NULL
![NowCoder刷题 SQL篇_第20张图片](http://img.e-com-net.com/image/info8/84b1140f232a46a99841caa3469988d7.jpg)
高级操作符
SQL11 高级操作符练习(1)
![NowCoder刷题 SQL篇_第21张图片](http://img.e-com-net.com/image/info8/06e825ad5c674c88b4beea08f66d947e.jpg)
SELECT device_id, gender, age, university, gpa FROM user_profile
WHERE gender = 'male'
AND gpa > 3.5
![NowCoder刷题 SQL篇_第22张图片](http://img.e-com-net.com/image/info8/6e39442983f34e50b2a787e7bb6fa5f5.jpg)
SQL12 高级操作符练习(2)
![NowCoder刷题 SQL篇_第23张图片](http://img.e-com-net.com/image/info8/d8c4e2b5aca94ef99f9f447b06f57c3b.jpg)
SELECT device_id, gender, age, university, gpa FROM user_profile
WHERE university = '北京大学'
OR gpa > 3.7
![NowCoder刷题 SQL篇_第24张图片](http://img.e-com-net.com/image/info8/e34545fdc0b9495a87cd7a18dcffdb3d.jpg)
SQL13 Where in 和Not in
![NowCoder刷题 SQL篇_第25张图片](http://img.e-com-net.com/image/info8/048cef0f473b430fbf1efa484eea1286.jpg)
SELECT device_id, gender, age, university, gpa FROM user_profile
WHERE university IN ('北京大学', '复旦大学', '山东大学')
![NowCoder刷题 SQL篇_第26张图片](http://img.e-com-net.com/image/info8/b5d42abff2894d41b21f57f0fd724e7c.jpg)
SQL14 操作符混合运用
![NowCoder刷题 SQL篇_第27张图片](http://img.e-com-net.com/image/info8/b16d7e3c099d4cfdab283bbd08857cb0.jpg)
SELECT device_id, gender, age, university, gpa
FROM user_profile
where (gpa > 3.5 and university = '山东大学') OR (gpa > 3.8 and university = '复旦大学')
![NowCoder刷题 SQL篇_第28张图片](http://img.e-com-net.com/image/info8/22700a004d7547c0bcdd6e2e07689ea7.jpg)
SQL15 查看学校名称中含北京的用户
![NowCoder刷题 SQL篇_第29张图片](http://img.e-com-net.com/image/info8/3b6b839c2eb24071a9f2d289198f2587.jpg)
SELECT device_id, age, university FROM user_profile
WHERE university LIKE '%北京%'
![NowCoder刷题 SQL篇_第30张图片](http://img.e-com-net.com/image/info8/d87f8db2157b429297a37b7313af5ce6.jpg)
03 高级查询
计算函数
SQL16 查找GPA最高值
![NowCoder刷题 SQL篇_第31张图片](http://img.e-com-net.com/image/info8/9c780cb343814d36b952e9f1c924203e.jpg)
SELECT gpa FROM user_profile
WHERE university = '复旦大学'
ORDER BY gpa DESC
LIMIT 1
![NowCoder刷题 SQL篇_第32张图片](http://img.e-com-net.com/image/info8/48eea4e346eb46e2b9c4bd22ceea2a1f.jpg)
SQL17 计算男生人数以及平均GPA
![NowCoder刷题 SQL篇_第33张图片](http://img.e-com-net.com/image/info8/39eb58cfb42c467eb59f7f5418a5c8a5.jpg)
SELECT COUNT(gender) AS male_num,
ROUND(AVG(gpa),1) AS avg_gpa
FROM user_profile
WHERE gender = 'male'
![NowCoder刷题 SQL篇_第34张图片](http://img.e-com-net.com/image/info8/1a41ebf153df4444a2b6dd118d95e21b.jpg)
分组查询
SQL18 分组计算练习题
![NowCoder刷题 SQL篇_第35张图片](http://img.e-com-net.com/image/info8/207b0893c1794904a5208fed6c252659.jpg)
SELECT gender,
university,
COUNT(device_id) 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
![NowCoder刷题 SQL篇_第36张图片](http://img.e-com-net.com/image/info8/ac4f42e0e84c4f2c9e0da7ff072613ea.jpg)
SQL18 分组计算练习题
![NowCoder刷题 SQL篇_第37张图片](http://img.e-com-net.com/image/info8/5892f4a058bc4c55bd3eae2bf4fa2e08.jpg)
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
![NowCoder刷题 SQL篇_第38张图片](http://img.e-com-net.com/image/info8/ec56a8d38edf4933b5c333e54b123206.jpg)
SQL20 分组排序练习题
![NowCoder刷题 SQL篇_第39张图片](http://img.e-com-net.com/image/info8/1fe178c2bcb940778718037bfabe8276.jpg)
SELECT university,
ROUND(AVG(question_cnt), 4) AS avg_question_cnt
FROM user_profile
GROUP BY university
ORDER BY avg_question_cnt
![NowCoder刷题 SQL篇_第40张图片](http://img.e-com-net.com/image/info8/799d375668c040e7ac3808cadb7af7c0.jpg)
04 多表查询
子查询
SQL21 浙江大学用户题目回答情况
![NowCoder刷题 SQL篇_第41张图片](http://img.e-com-net.com/image/info8/9d7adc0649c546c0819099ca62b8a700.jpg)
SELECT A.device_id,
A.question_id,
A.result
FROM question_practice_detail A
LEFT JOIN user_profile B
ON A.device_id = B.device_id
WHERE B.university = '浙江大学'
ORDER BY A.question_id
![NowCoder刷题 SQL篇_第42张图片](http://img.e-com-net.com/image/info8/d128cebd194445e3894436160cf21718.jpg)
连接查询
SQL22 统计每个学校的答过题的用户的平均答题数
![NowCoder刷题 SQL篇_第43张图片](http://img.e-com-net.com/image/info8/e7cf79d37cab4c24bc45522159dbac5a.jpg)
SELECT A.university,
COUNT(B.question_id)/COUNT(DISTINCT(A.device_id)) AS avg_answer_cnt
FROM user_profile AS A
JOIN question_practice_detail AS B
ON A.device_id = B.device_id
GROUP BY A.university
![NowCoder刷题 SQL篇_第44张图片](http://img.e-com-net.com/image/info8/335eb6954d8b4c6a9e45794ddead6de8.jpg)
SQL23 统计每个学校各难度的用户平均刷题数
![NowCoder刷题 SQL篇_第45张图片](http://img.e-com-net.com/image/info8/e30e3dc88a80442c8334552908c604f8.jpg)
SELECT A.university,
C.difficult_level,
COUNT(B.question_id)/COUNT(DISTINCT(A.device_id)) AS avg_answer_cnt
FROM user_profile AS A
JOIN question_practice_detail AS B
ON A.device_id = B.device_id
JOIN question_detail AS C
ON B.question_id = C.question_id
GROUP BY A.university, C.difficult_level
![NowCoder刷题 SQL篇_第46张图片](http://img.e-com-net.com/image/info8/55895564f636490184f09bbb8c0a2ce4.jpg)
SQL24 统计每个用户的平均刷题数
![NowCoder刷题 SQL篇_第47张图片](http://img.e-com-net.com/image/info8/7b2406ba4a7e4df099b1acf9e8fefcb9.jpg)
SELECT T1.university,
T3.difficult_level,
ROUND(COUNT(T2.question_id)/COUNT(DISTINCT(T1.device_id)), 4) AS avg_answer_cnt
FROM user_profile AS T1
JOIN question_practice_detail T2
ON T1.device_id = T2.device_id
JOIN question_detail T3
ON T2.question_id = T3.question_id
WHERE T1.university = '山东大学'
GROUP BY T1.university, T3.difficult_level
![NowCoder刷题 SQL篇_第48张图片](http://img.e-com-net.com/image/info8/322b3b15168046b9866abda97ebee1e8.jpg)
组合查询
SQL25 查找山东大学或者性别为男生的信息
![NowCoder刷题 SQL篇_第49张图片](http://img.e-com-net.com/image/info8/f3aa149b275843718ba0f44005bc8510.jpg)
SELECT device_id,
gender,
age,
gpa
FROM user_profile
WHERE university = '山东大学'
UNION ALL
SELECT device_id,
gender,
age,
gpa
FROM user_profile
WHERE gender = 'male'
![NowCoder刷题 SQL篇_第50张图片](http://img.e-com-net.com/image/info8/aaaba4423f1e4338b187aa1bbe6fb6e0.jpg)
05 必会的常用函数
条件函数
SQL26 计算25岁以上和以下的用户数量
![NowCoder刷题 SQL篇_第51张图片](http://img.e-com-net.com/image/info8/14ee2dd6ecd04c628b3ec4e1df46e8f2.jpg)
SELECT CASE WHEN age < 25 OR age IS NULL THEN '25岁以下'
WHEN age >= 25 THEN '25岁及以上'
END age_cut,COUNT(*)number
FROM user_profile
GROUP BY age_cut
![NowCoder刷题 SQL篇_第52张图片](http://img.e-com-net.com/image/info8/bdbca694e2c04b8ea8a0a42030bdf39e.jpg)
SQL27 查看不同年龄段的用户明细
![NowCoder刷题 SQL篇_第53张图片](http://img.e-com-net.com/image/info8/b1becf709db44b72afc5c4602092ed67.jpg)
SELECT device_id,
gender,
CASE WHEN age < 20 THEN '20岁以下'
WHEN age BETWEEN 20 AND 24 THEN '20-24岁'
WHEN age >= 25 THEN '25岁及以上'
ELSE '其他'
END age_cut
FROM user_profile
![NowCoder刷题 SQL篇_第54张图片](http://img.e-com-net.com/image/info8/a8724f774b9547e2b41745b49cfd1a0e.jpg)
日期函数
SQL28 计算用户8月每天的练题数量
![NowCoder刷题 SQL篇_第55张图片](http://img.e-com-net.com/image/info8/e1b6b88decec4222bf406fe3e269a552.jpg)
SELECT DAY(date) AS day,
COUNT(question_id) AS question_cnt
FROM question_practice_detail
WHERE LEFT(date, 7) = '2021-08'
GROUP BY day
![NowCoder刷题 SQL篇_第56张图片](http://img.e-com-net.com/image/info8/13d12c05c9ba4ffc9ff18cef2dced588.jpg)
SQL29 计算用户的平均次日留存率
![NowCoder刷题 SQL篇_第57张图片](http://img.e-com-net.com/image/info8/37b0f8809f094d548713f74050798d8b.jpg)
SELECT COUNT(T2.date)/COUNT(T1.date) FROM
(SELECT DISTINCT device_id, date FROM question_practice_detail) T1
LEFT JOIN
(SELECT DISTINCT device_id, date FROM question_practice_detail) T2
ON T1.device_id = T2.device_id
AND T2.date = date_add(T1.date, interval 1 day)
![NowCoder刷题 SQL篇_第58张图片](http://img.e-com-net.com/image/info8/cf5e2b770f92450dbca70686ea6263ff.jpg)
文本函数
SQL30 统计每种性别的人数
![NowCoder刷题 SQL篇_第59张图片](http://img.e-com-net.com/image/info8/506c2a1079cb4082a02f36cbd8178665.jpg)
SELECT SUBSTRING_INDEX(profile, ',', -1) AS gender,
COUNT(device_id) AS number
FROM user_submit
GROUP BY gender
![NowCoder刷题 SQL篇_第60张图片](http://img.e-com-net.com/image/info8/286b1676435b45ca86275c5e364da5fb.jpg)
SQL31 提取博客URL中的用户名
![NowCoder刷题 SQL篇_第61张图片](http://img.e-com-net.com/image/info8/234656df2c4d42638f47357eabf6a553.jpg)
SELECT device_id,
SUBSTRING_INDEX(blog_url, '/', -1) AS user_name
FROM user_submit
![NowCoder刷题 SQL篇_第62张图片](http://img.e-com-net.com/image/info8/d52e737063ec4f21b92a646e675cdef5.jpg)
SQL32 截取出年龄
![NowCoder刷题 SQL篇_第63张图片](http://img.e-com-net.com/image/info8/913ebd921db044e29af75d4e08d2f948.jpg)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(profile, ',', -2), ',', 1) AS age,
COUNT(device_id) AS number
FROM user_submit
GROUP BY age
![NowCoder刷题 SQL篇_第64张图片](http://img.e-com-net.com/image/info8/36ab97904f514927af1db6194221cec3.jpg)
窗口函数
SQL33 找出每个学校GPA最低的同学
![NowCoder刷题 SQL篇_第65张图片](http://img.e-com-net.com/image/info8/7cb4de0ad4f8432bbc99c509c096a224.jpg)
SELECT device_id,
university,
gpa
FROM (
SELECT device_id,
university,
gpa,
ROW_NUMBER() OVER(PARTITION BY university ORDER BY gpa) AS RK
FROM user_profile
)T
WHERE T.RK = 1
![NowCoder刷题 SQL篇_第66张图片](http://img.e-com-net.com/image/info8/1f1894d3ec3f4aceb05a32f0d4ecf138.jpg)
06 综合练习
综合练习
SQL34 统计复旦用户8月练题情况
![NowCoder刷题 SQL篇_第67张图片](http://img.e-com-net.com/image/info8/b9701839d6ef441b9fc33aa21c5483e9.jpg)
SELECT T1.device_id,
T1.university,
SUM(IF(T2.result is NOT NULL, 1, 0)) AS question_cnt,
SUM(IF(T2.result = 'right', 1, 0)) AS right_question_cnt
FROM user_profile AS T1
LEFT JOIN question_practice_detail AS T2
ON T1.device_id=T2.device_id
WHERE T1.university='复旦大学' AND (MONTH(T2.date)=8 OR T2.date is NULL)
GROUP BY T1.device_id
![NowCoder刷题 SQL篇_第68张图片](http://img.e-com-net.com/image/info8/3be9bf71bcee4df6b6d2dfa5123d15a4.jpg)
SQL35 浙大不同难度题目的正确率
![NowCoder刷题 SQL篇_第69张图片](http://img.e-com-net.com/image/info8/43d2c5346c74419bb10cc4606bf7162c.jpg)
SELECT
T3.difficult_level,
ROUND(SUM(IF(T2.result = 'right', 1, 0))/COUNT(T2.result), 4) AS correct_rate
FROM user_profile AS T1
LEFT JOIN question_practice_detail AS T2
ON T1.device_id = T2.device_id
LEFT JOIN question_detail T3
ON T2.question_id = T3.question_id
WHERE T1.university = '浙江大学'
AND T3.difficult_level IS NOT NULL
GROUP BY T3.difficult_level
ORDER BY correct_rate
![NowCoder刷题 SQL篇_第70张图片](http://img.e-com-net.com/image/info8/482327cefd3847f59bc9eb5daa743dd3.jpg)
SQL36 查找后排序
![NowCoder刷题 SQL篇_第71张图片](http://img.e-com-net.com/image/info8/c68e1e10810c46a6a689de9f41d77f93.jpg)
SELECT device_id,
age
FROM user_profile
ORDER BY age
![NowCoder刷题 SQL篇_第72张图片](http://img.e-com-net.com/image/info8/c3c6cf2e0d2243579ca75f8fbb45c3a0.jpg)
SQL37 查找后多列排序
![NowCoder刷题 SQL篇_第73张图片](http://img.e-com-net.com/image/info8/9e705e42f89244499b0308d7947d8b0f.jpg)
SELECT device_id,
gpa,
age
FROM user_profile
ORDER BY gpa, age
![NowCoder刷题 SQL篇_第74张图片](http://img.e-com-net.com/image/info8/8e7adf7e20bd4297a4afdf67e65d5e03.jpg)
SQL38 查找后降序排列
![NowCoder刷题 SQL篇_第75张图片](http://img.e-com-net.com/image/info8/2b4003b8771545349f742b77b7601753.jpg)
SELECT device_id,
gpa,
age
FROM user_profile
ORDER BY gpa DESC, age DESC
![NowCoder刷题 SQL篇_第76张图片](http://img.e-com-net.com/image/info8/ea0a747f78304fcda05c8d13ca31a0eb.jpg)
SQL39 21年8月份练题总数
![NowCoder刷题 SQL篇_第77张图片](http://img.e-com-net.com/image/info8/8c016351716446b1b5371fb4172ae345.jpg)
SELECT COUNT(DISTINCT(device_id)) AS did_cnt,
COUNT(question_id) AS question_cnt
FROM question_practice_detail
WHERE LEFT(date, 7) = '2021-08'
ORDER BY did_cnt
SELECT COUNT(did_cnt),
SUM(question_cnt)
FROM (
SELECT COUNT(device_id) AS did_cnt,
COUNT(question_id) AS question_cnt
FROM question_practice_detail
WHERE date >= '2021-08-01' and date <= '2021-08-31'
GROUP BY device_id
)T
![NowCoder刷题 SQL篇_第78张图片](http://img.e-com-net.com/image/info8/64769b94c5424024b3c55e7f2baa9329.jpg)
完结