MYSQL练题笔记-高级查询和连接-这系列最后一题以及下个系列(子查询)的第一题

今天做了下面两题,到第三题的时候想了下但是没有太多的思路,然后看题解的时候实在是觉得自己不会,打算明天看吧。

MYSQL练题笔记-高级查询和连接-这系列最后一题以及下个系列(子查询)的第一题_第1张图片

1.按分类统计薪水相关的表和题目如下

MYSQL练题笔记-高级查询和连接-这系列最后一题以及下个系列(子查询)的第一题_第2张图片

我看到题目就认为有三个输出需要联合,所以就用了union,我的题解如下

select 'Low Salary'as category, count(income) as accounts_count from accounts where income<20000 union select 'Average Salary'as category, count(income) as accounts_count from accounts where income between 20000 and 50000 union select 'High Salary'as category, count(income) as accounts_count from accounts where income>50000;

就是普通的union联合表,但是效率好像不高,我看效率第一的题解有一个很长的,如下图

MYSQL练题笔记-高级查询和连接-这系列最后一题以及下个系列(子查询)的第一题_第3张图片

我想着理解with as 但是百度我觉得这种方式不重要,而且我觉得这个太复杂了,还是觉得不去理解了。

2.上级经理已离职的公司员工相关的表和题目如下

MYSQL练题笔记-高级查询和连接-这系列最后一题以及下个系列(子查询)的第一题_第4张图片

我是想着简化问题,先找出薪水低于30000的员工,然后找这些员工的上级是否在全部的表里,但是其实刚开始我是没有想出来的,画了个图才发现不难,写完其实会发现是很简单的一题,我的题解如下

select employee_id from employees where salary<30000 and manager_id not in (select employee_id from employees) order by employee_id;

总结

有行动就是我这个菜鸟的进步,不行动啥也没有,生命在于探索和实践,现在的情况不好不代表以后,加油加油!!!!我现在就是觉得这种方式其实反馈不是很多的,没有探讨的步骤,自己的话又不会,不过一句话还是多练多反思和实践吧!!!

你可能感兴趣的:(MYSQL,mysql,笔记,数据库)