文章目录

  • 单表
    • SQL1
    • SQL 2
    • SQL 7:错误次数 1
    • SQL17
    • SQL 32:出错次数 1
    • SQL 34:出错次数 1
    • SQL 42:出错次数 1
    • SQL43:出错次数 1
    • SQL 45:出错次数 1
    • SQL 62
    • SQL 66
    • SQL 72:出错次数 1
    • SQL 77:出错次数 1
    • SQL 84:出错次数 1
  • 两个表
    • SQL 3
    • SQL 4
    • SQL 5
    • SQL 8:错误次数 1
    • SQL10:错误次数 1
    • SQL11:出错次数 1
    • SQL15:出错次数 1
    • SQL16
    • SQL 64
  • 三个表
    • SQL19:出错次数 1
    • SQL22 !

单表

SQL1

题目:最大

答案1

SELECT *
FROM employees
ORDER BY hire_date DESC
LIMIT 1;

答案2:考虑到最晚雇佣不止一个员工

SELECT *
FROM employees
WHERE hire_date = (SELECT MAX(hire_date)FROM employees);

SQL 2

题目:第三大

LIMIT m,n

SELECT *
FROM employees
WHERE hire_date = (SELECT hire_dateFROM employeesORDER BY hire_date DESCLIMIT 2, 1);

SQL 7:错误次数 1

题目:group by

  • GROUP BY
  • 聚集函数(count)不可用于WHERE语句中,只能用在 HAVING 中。

答案

SELECT emp_no, count(emp_no) AS t
FROM salaries
GROUP BY emp_no HAVING t>15;

错误示例

SELECT emp_no, count(emp_no) AS t
FROM salaries
WHERE count(emp_no)>15;

SQL17

题目:第二大

考虑到第二高工资不止一个员工

SELECT emp_no, salary
FROM salaries
WHERE salary = (SELECT salaryFROM salariesORDER BY salary DESCLIMIT 1,1);

SQL 32:出错次数 1

拼接

SELECT CONCAT(last_name,' ',first_name) AS Name
FROM employees;

SQL 34:出错次数 1

题目:批量insert

INSERT INTO actor
VALUES (1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),(2,'NICK','WAHLBERG','2006-02-15 12:34:33');

SQL 42:出错次数 1

题目:delete, 子查询

mysql 中,delete、update 数据中若出现 select子句,不能为同一张表
解决:将子语句作为 from 表再包裹一层,select * from(子句) as t,给表起别名

答案:

DELETE FROM titles_test
WHERE id NOT IN (SELECT *FROM (SELECT MIN(id)FROM titles_testGROUP BY emp_no)AS t);     # 起别名

错误示例:

DELETE FROM titles_test
WHERE id NOT IN (SELECT MIN(id)FROM titles_test         # 不能与 delete 同一张表GROUP BY emp_no);

SQL43:出错次数 1

update

UPDATE titles_test
SET to_date=NULL,from_date='2001-01-01'
WHERE to_date='9999-01-01';

SQL 45:出错次数 1

改名

RENAME TABLE titles_test TO titles_2017;

SQL 62

题目:group by

SELECT number
FROM grade
GROUP BY number HAVING COUNT(*)>=3;

SQL 66

题目:group by

SELECT user_id, MAX(date) AS d
FROM login
GROUP BY user_id
ORDER BY user_id;

SQL 72:出错次数 1

题目:group by、保留小数点

处理函数 round():保留小数几位

SELECT job, ROUND(AVG(score),3) AS avg
FROM grade
GROUP BY job
ORDER BY avg DESC;

SQL 77:出错次数 1

题目:比较时间

处理函数 datediff():计算两个date相差几天

SELECT *
FROM order_info
WHERE DATEDIFF(date, '2025-10-15')>0            # date>'2025-10-15'
AND status='completed'
AND product_name IN ('Java', 'Python', 'C++')
ORDER BY id;

SQL 84:出错次数 1

题目:group by、时间

SELECT job, sum(num) AS cnt
FROM resume_info
WHERE YEAR(date)=2025
GROUP BY job
ORDER BY cnt DESC;

两个表

SQL 3

题目:inner join

SELECT salaries.*, dept_no
FROM salaries INNER JOIN dept_manager
ON salaries.emp_no = dept_manager.emp_no
ORDER BY salaries.emp_no;

SQL 4

题目:inner join

联合查询

答案1

SELECT last_name, first_name, dept_no
FROM employees, dept_emp
WHERE dept_emp.emp_no = employees.emp_no;

答案2:与答案1等效

SELECT last_name, first_name, dept_no
FROM employees
INNER JOIN dept_emp
ON dept_emp.emp_no = employees.emp_no;

SQL 5

题目:left join

SELECT last_name, first_name, dept_no
FROM employees LEFT JOIN dept_emp
ON employees.emp_no = dept_emp.emp_no;

SQL 8:错误次数 1

题目:distinct 和 group by

  • GROUP BY 可代替 DISTINCT (答案1、2)
  • WHERE 和 HAVING 的区别(答案3、答案4)

答案1:不建议用 DISTINCT ,效率低

SELECT DISTINCT salary
FROM salaries
ORDER BY salary DESC;

答案2:推荐

SELECT salary
FROM salaries
GROUP BY salary
ORDER BY salary DESC;

SQL10:错误次数 1

题目:left join,差

  • 多表查询尽量用 JOIN ON,效率更高(答案1、2)
  • LEFT JOIN … ON…WHERE …IS NULL

答案1

SELECT emp_no
FROM employees
WHERE emp_no NOT IN (SELECT emp_noFROM dept_manager);

答案2

SELECT employees.emp_no
FROM employees LEFT JOIN dept_manager
ON employees.emp_no = dept_manager.emp_no
WHERE dept_no IS NULL;

SQL11:出错次数 1

题目:两个表有两个列相关(两个外键), left join

SELECT t1.emp_no, t2.emp_no AS manager
FROM dept_emp AS t1 LEFT JOIN dept_manager AS t2
ON t1.dept_no = t2.dept_no
WHERE t1.emp_no != t2.emp_no;

SQL15:出错次数 1

题目:奇数

  • 过滤奇数:取余为1
SELECT *
FROM employees
WHERE emp_no%2=1 AND last_name!='Mary'
ORDER BY hire_date DESC;

SQL16

题目:inner join

SELECT t.title, AVG(s.salary)
FROM titles AS t INNER JOIN salaries AS s
ON t.emp_no = s.emp_no
GROUP BY title
ORDER BY AVG(s.salary);

SQL 64

题目:left join

SELECT person.id, person.name, task.content
FROM person LEFT JOIN task
ON person.id = task.person_id
ORDER BY person.id;

三个表

SQL19:出错次数 1

三个表的联结

SELECT e.last_name, e.first_name, d2.dept_name
FROM (employees AS e LEFT JOIN dept_emp AS d1 ON e.emp_no = d1.emp_no)
LEFT JOIN departments AS d2
ON d1.dept_no = d2.dept_no;

SQL22 !

SELECT d2.dept_no, d2.dept_name, COUNT(s.salary) AS sum
FROM (dept_emp AS d1 INNER JOIN salaries AS sON d1.emp_no = s.emp_no) INNER JOIN departments AS d2
ON d1.dept_no = d2.dept_no
GROUP BY d2.dept_no
ORDER BY d2.dept_no;

牛客网SQL练习题(Mysql-8)相关推荐

  1. 牛客网SQL刷题笔记(MySQL)

    牛客网SQL刷题笔记(MySQL) 此博客集合LeetCode.牛客网常见的题型及其解法,侵删 目录 牛客网SQL刷题笔记(MySQL) 类型1:查找排名第几的数据 SQL2 查找入职员工时间排名倒数 ...

  2. 牛客网数据开发题库_练习SQL利器,牛客网SQL实战题库

    牛客网SQL实战网址:https://www.nowcoder.com/ta/sql 持续更新--记录自己在牛客网SQL的做题过程 更新进度:61题,2019-4-3,更完了 1.查找最晚入职员工的所 ...

  3. 牛客网sql练习题解(22-32)

    文章目录 简介 NO.22 NO.23 NO.24 NO.25 NO.26 NO.27 NO.28 NO.29 NO.30 NO.31 NO.32 简介 往期文章: 牛客网sql练习题解 (1-11) ...

  4. 牛客网SQL题目解析(答案+解析+理解)

    本文记录了牛客网sql全部题目的答案与难题解析,部分题目包含多种解法,并且涵盖了开窗函数等各种语法点的理解 标题中高亮的题目,是易错题 牛客网刷题链接:牛客网sql在线练习 本文所有语句使用mysql ...

  5. 牛客网sql题库(1-30题)—— 个人答案与过程解析

    本篇博客分享一下我在牛客网sql题库刷题时,自己敲出来的结果.结果均通过了牛客网的结果验证. 具体的题目就不放在博客中了,感兴趣可以自行去搜索牛客网,找到sql题库在线编程 每道题下面都有我自己写的题 ...

  6. sql里查询一个组和组的用户数怎么查?_【牛客网SQL刷题】留存率怎么算?

    抽空刷了牛客网SQL实战72题,最后几道以牛客网为例的题目还挺有挑战性,在此记录 统计时间段新用户次日留存率 每日的次日留存率 每日的新用户数 每日新用户的次日留存 求新登录用户次日留存 表login ...

  7. 牛客网SQL 进阶篇刷题

    牛客网SQL 进阶篇刷题(1-19) 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分: 用户1002在2021年9月4日上午7点1分2秒开始 ...

  8. 牛客网SQL实战二刷 | Day10

    「牛客网SQL实战二刷」是个系列学习笔记博文,今天解析7道SQL题目- 第55 - 61题. 每篇笔记的格式大致为,三大板块: 大纲 题目(题目描述.思路.代码.相关参考资料/答疑) 回顾 ❤️「往期 ...

  9. 牛客网sql练习题解(12-21)

    文章目录 简介 NO.12 NO.13 NO.14 NO.15 NO.16 NO.17 NO.18 NO.19 NO.20 NO.21 简介 按时来更,感觉题目不是很难,不过我有一个感觉就是虽然题目简 ...

  10. 牛客网-SQL题库笔记

    牛客网-SQL题库笔记 01.最晚入职员工的所有信息 02.查找入职员工时间排名倒数第三的员工所有信息 03.查找各个部门当前领导当前薪水详情以及其对应部门编号 04.查找所有已经分配部门的员工的la ...

最新文章

  1. python使用Spacy迁移学习库进行句法分析实战
  2. mybatis 中#和$的区别
  3. 使用HTML5、CSS3和jQuery增强网站用户体验
  4. Linux日志安全分析技巧
  5. PWN-PRACTICE-BUUCTF-12
  6. xdebug调试时出错 --mxp
  7. 开课吧Java课堂之SortedSet接口如何去用?
  8. vector用法 java equals_java泛型vector的用法 | 学步园
  9. (转)海外基金销售新模式 机器人投顾与人工相结合
  10. Linux从入门到放弃(1)教学视频推荐以及一些经验分享
  11. 使用AirDrop将文件从iPhone或iPad传送到Mac电脑教程
  12. 论K21O Draco开发板的概论
  13. Eclipse中Outline里各种图标的含义
  14. 【报错】UnboundLocalError: local variable ‘xxx‘ referenced before assignment
  15. 关于初学者对于二级菜单制作的小结
  16. time模块训练:打印出某网店每天累计的购物次数
  17. 数千亿汽车后市场亟待标准化 车小亮模式极具想象空间
  18. Unity_安卓(Android)端AVProVideo插件播放不了视频问题解决
  19. [小游戏资源] 微信小游戏开发资源目录
  20. 医疗器械计算机培训,深度学习,AI医疗器械“学然后知不足”

热门文章

  1. 开源转场库HYBControllerTransitions
  2. fio性能测试工具新添图形前端gfio
  3. 新手引导 自定义遮罩 点击穿透
  4. python 汽车行业数据库_python3+Neo4j+flask,汽车行业知识图谱项目实战
  5. guava 的重试机制 guava-retrying 使用
  6. java.util.zip.ZipException:invalid distance distance too far back
  7. java基础回顾---static关键字
  8. web项目设计文档_web项目前后端分离模式下的权限设计方案
  9. 大型架构.net平台篇(WEB层均衡负载nginx)
  10. 微服务容错限流Hystrix入门