随手刷过力扣数据库题和牛客的SQL实战题,今天就对两边的简单题做个总结,让我们一起来看看对于SQL简单题常考的有哪些知识点以及题型吧。
PS:如果分类区有漏掉的题,欢迎评论区补充,谢谢!
-
常考<mark>知识点一</mark>:两表或多表连接,即👉<mark>考察JOIN 、LEFT JOIN、RIGHT JOIN、INNER JOIN 的用法和区别。</mark>
-
题型有:
(PPS: 下面提到的题都是其中一种解***用到这个知识点;此题也有其他解法可用 )- Leetcode 👉 175. 组合两表
- Leetcode 👉 181. 超过经理收入的员工
- Leetcode 👉 182. 查找重复的电子邮箱
- Leetcode 👉 183. 从不订购的客户
- 牛客SQL实战简单题👉SQL 4. 查找所有已经分配部门的员工的last_name和first_name以及dept_no
- 牛客SQL实战简单题👉SQL 10.获取所有非manager的员工emp_no
- 牛客SQL实战简单题👉SQL 64. 找到每个人的任务情况
-
常考<mark>知识点二</mark>:按字段排序,并取指定位置的值。即👉<mark>考察ORDER BY 函数和LIMIT 函数的用法。</mark>
-
题型有:
- Leetcode 👉 176. 第二高的薪水
- 牛客SQL实战简单题👉SQL 2. 查找入职员工时间排名倒数第三的员工所有信息
- 牛客SQL实战简单题👉SQL 20. 查找员工编号emp_no为10001其自入职以来的薪水salary涨幅(总共涨了多少)growth(可能有多次涨薪,没有降薪)
-
常考<mark>知识点三</mark>:分组后按条件筛选。即👉<mark>考察GROUP BY函数 和 HAVING 函数的用法。</mark>
-
PPPS:这里记住一个点👉WHERE子句无法与聚合函数(比如COUNT)一起使用。 这里再次补充一下SQL语句查询的执行步骤:
SELECT col_1, col_2, COUNT(*) as num #顺序5
FROM table_1 JOIN table_2 ON table_1.id = table_2.id #顺序1
WHERE col_3 > 2.90 #顺序2
GROUP BY table_1.id #顺序3
HAVING num > 2 #顺序4
ORDER BY num DESC #顺序6
LIMIT 2 #顺序7
所以如果WHERE后面跟COUNT 函数,那么运行到WHERE子句时,表还没有被分组,此时就会报错!!❌
-
题型有:
- Leetcode 👉 596. 超过5名学生的课
- Leetcode 👉 182. 查找重复的电子邮箱
- 牛客SQL实战简单题👉SQL 7. 查找薪水变动超过15次的员工号emp_no以及其对应的变动次数t
- 牛客SQL实战简单题👉 SQL 13. 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t
- 牛客SQL实战简单题👉 SQL 62. 查询出现三次以及三次以上的积分
-
常考<mark>知识点四</mark>:条件筛选+否定词。即👉<mark>考察子查询和 NOT IN 用法。</mark>
-
题型有:
- Leetcode 👉 183. 从不订购的客户
- 牛客SQL实战简单题👉 SQL 10. 获取所有非manager的员工emp_no
-
常考<mark>知识点五</mark>:删除表格重复的记录。即👉<mark>考察DELETE 函数和 WHERE 子句用法。</mark>
-
题型有:
- Leetcode 👉 196. 删除重复的电子邮箱
- 牛客SQL实战简单题👉 SQL 42. 删除emp_no重复的记录,只保留最小的id对应的记录
-
常考<mark>知识点六</mark>:分组取最大/最小/平均值并排序。即👉<mark>考察GROUP BY函数、ORDER BY函数以及聚合函数(比如MAX()、MIN()、AVG()等)。</mark>
-
题型有:
- 牛客SQL实战简单题👉 SQL 66. 牛客每个用户最近登录是哪一天
- 牛客SQL实战简单题👉 SQL 72. 查询各个岗位分数的平均数,并且按照分数降序排序,结果保留小数点后面3位
-
常考<mark>知识点七</mark>:数据更新操作。即👉<mark>考察UPDATE 函数 + CASE WHEN函数/REPLACE函数/IF函数用法。</mark>
-
题型有:
- Leetcode 👉 627. 变更性别
- 牛客SQL实战简单题👉 SQL 43. 将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01
- 牛客SQL实战简单题👉 SQL 44. 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现
-
常考<mark>知识点八</mark>:奇/偶数查询。即👉<mark>考察 位运算的 按位与(&) 运算</mark>。
-
题型有:
- Leetcode 👉 620. 有趣的电影
- 牛客SQL实战简单题👉 SQL 15. 查找employees表所有emp_no为奇数
-
常考<mark>知识点九</mark>:重写表格(重新改写表格样式)。即👉<mark>考察 CASE WHEN函数 / IF 函数的用法以及SQL分组聚合。</mark>
-
题型有:
- Leetcode 👉 1179. 重新格式化部门表
当然,还有像修改表名(ALTER TABLE …RENAME TO…)以及批量插入数据到表格、WHERE子句进行条件筛选 这些相对更简单的就不单独说了,掌柜最后给一个思维导图汇总简单题的知识点:👇
今天的总结就到这里😁,想要看力扣的详细题解的请移步👉:Leetcode题解,谢谢。