w3resource_MySQL练习题:Subquery

1. Write a query to find the name (first_name, last_name) and the salary of the employees who have a higher salary than the employee whose last_name='Bull'
Sample table: employees
-- 要点:where里select
select first_name, last_name, salary
from employees
where salary>(
select salary from employees where last_name='Bull'
)

 

2. Write a query to find the name (first_name, last_name) of all employees who works in the IT department
Sample table: employees
-- 要点:直接where筛选
select first_name, last_name
from employees
where department_id='it'
3. Write a query to find the name (first_name, last_name) of the employees who have a manager and worked in a USA based department
Hint : Write single-row and multiple-row subqueries
Sample table: employees
Sample table: departments
Sample table: locations
-- 要点:多层嵌套查询
select first_name, last_name
from employees
where manager_id in (   -- 通过employees表获得manager_id
    select employee_id FROM employees
    where department_id in (  -- 通过departments表获得在USA的department_id
        select department_id from departments
        where location_id in (  -- 通过locations表获得在USA的location_id
            select location_id from locations
            where country_id='US'
        )
    )
)
4. Write a query to find the name (first_name, last_name) of the employees who are managers
Sample table: employees
-- 要点:在where中传入manager_id
select first_name, last_name
from employees
where employee_id in (
  select distinct manager_id from employees
)

  

5. Write a query to find the name (first_name, last_name), and salary of the employees whose salary is greater than the average salary
Sample table: employees
-- 要点:where
select first_name, last_name, salary
from employees
where salary>(
    select avg(salary) from employees
)
6. Write a query to find the name (first_name, last_name), and salary of the employees whose salary is equal to the minimum salary for their job grade
Sample table: employees
Sample table: jobs
-- 方法1:使用where嵌套查询
select e.first_name, e.last_name, e.salary
from employees as e
where e.salary=(
    select j.min_salary from jobs as j where j.job_id=e.job_id
)
-- 方法2:使用多表连接(from连接多张表)
select e.first_name, e.last_name, e.salary
from employees as e, jobs as j
where j.job_id=e.job_id
and e.salary=j.min_salary
 
7. Write a query to find the name (first_name, last_name), and salary of the employees who earns more than the average salary and works in any of the IT departments
Sample table: employees
Sample table: departments
-- 要点:where
select first_name, last_name, salary
from employees
where salary>(avg salary from employees)
and department_id in (select distinct department_id from departments where department_name like 'IT%')
8. Write a query to find the name (first_name, last_name), and salary of the employees who earns more than the earning of Mr. Bell
Sample table: employees
Sample table: departments
-- 要点:where
select first_name, last_name, salary
from employees
where salary>(select salary from employees where last_name='Bell')
 
9. Write a query to find the name (first_name, last_name), and salary of the employees who earn the same salary as the minimum salary for all departments
Sample table: employees
Sample table: departments
-- 要点:where + min()
select first_name, last_name, salary
from employees
where salary=(select min(salary) from employees)
 
10. Write a query to find the name (first_name, last_name), and salary of the employees whose salary is greater than the average salary of all departments
Sample table: employees
-- 要点:where + min()
select first_name, last_name, salary
from employees
where salary>(select avg(salary) from employees)
11. Write a query to find the name (first_name, last_name) and salary of the employees who earn a salary that is higher than the salary of all the Shipping Clerk (JOB_ID = 'SH_CLERK'). Sort the results of the salary of the lowest to highest
Sample table: employees
-- 要点:where
select first_name, last_name, salary
from employees
where salary>(
    select max(salary) from employees where job_id='SH_CLERK'
)
order by salary asc
12. Write a query to find the name (first_name, last_name) of the employees who are not supervisors
Sample table: employees
-- 要点:where + not in
select first_name, last_name
from employees
where employee_id not in (
    select manager_id from employees
)
13. Write a query to display the employee ID, first name, last name, and department names of all employees
Sample table: employees
Sample table: departments
-- 1. 多表连接
select employee_id, first_name, last_name, department_name
from employees, departments
where employees.department_id=departments.department_id
-- 2. select内筛选
SELECT employee_id, first_name, last_name,
(SELECT department_name FROM departments d
WHERE e.department_id = d.department_id) department
FROM employees e ORDER BY department;
14. Write a query to display the employee ID, first name, last name, salary of all employees whose salary is above average for their departments
Sample table: employees
Sample table: departments
-- 要点:where
select employee_id, first_name, last_name, salary
from employees e
where salary>(
    select avg(salary) from employees e2 where e1.department_id = e2.department_id
)
15. Write a query to fetch even numbered records from employees table
Sample table: employees
-- 要点:判断奇偶数,使用%2进行取余
select *
from employees
where (employee_id%2<>0)
16. Write a query to find the 5th maximum salary in the employees table
Sample table: employees
-- 1. 首先按salary进行降序排列取前五行,然后顺序排列取第一行
select *
from (select * from employees order by salary desc limit 5)
order by salary
limit 1
-- 2. where内做筛选
SELECT DISTINCT salary
FROM employees e1
WHERE 5 = (
    SELECT COUNT(DISTINCT salary)
    FROM employees e2
    WHERE e2.salary >= e1.salary
);
17. Write a query to find the 4th minimum salary in the employees table
Sample table: employees
-- 1. 首先按salary进行排列取前四行,然后顺序排列取第一行
select *
from (select * from employees order by salary asc limit 4)
order by salary
limit 1
-- 2. where内做筛选
SELECT DISTINCT salary
FROM employees e1
WHERE 4 = (
    SELECT COUNT(DISTINCT salary)
    FROM employees e2
    WHERE e2.salary >= e1.salary
);
18. Write a query to select last 10 records from a table
Sample table: employees
-- 要点:根据employee_id进行排序
select *
from employees
order by employee_id desc
limit 10
19. Write a query to list the department ID and name of all the departments where no employee is working
Sample table: employees
Sample table: departments
-- 要点:通过department_id进行判断
select department_id, department_name
from departments
where department_id not in (
select distinct department_id from employees
)
20. Write a query to get 3 maximum salaries
Sample table: employees
-- 要点:limit
select *
from employees
order by salary desc
limit 3
21. Write a query to get 3 minimum salaries
Sample table: employees
-- 要点:limit
select *
from employees
order by salary asc
limit 3
22. Write a query to get nth max salaries of employees
Sample table: employees
-- 要点:limit a, b 取数范围为:第[a+1, a+b]条记录
select *
from employees
order by salary
limit (n-1), 1

w3resource_MySQL练习:Subquery的更多相关文章

  1. MySQL----This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery

    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'的意思是,这版本的 MySQL 不支持使 ...

  2. Oracle索引失效问题:WHERE C1='' OR C2 IN(SubQuery),并发请求时出现大量latch: cache buffers chains等待

    问题描述: 项目反馈某功能响应时间很长,高峰期时系统整体响应很慢... 获取相应的AWR,问题确实比较严重,latch: cache buffers chains等待,因为这些会话SQL执行时间太长, ...

  3. [慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时

    案例梳理时间:2013-9-25 写在前面的话: 在慢查优化1和2里都反复强调过 explain 的重要性,但有时候肉眼看不出 explain 结果如何指导优化,这时候还需要有一些其他基础知识的佐助, ...

  4. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery 解决方法

    This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'的意思是,这版本的 MySQL 不支持使 ...

  5. DEPENDENT SUBQUERY” 和 “SUBQUERY”

    http://blog.163.com/li_hx/blog/static/183991413201642410122327/ mysql> CREATE TABLE t1 (a INT, b ...

  6. linux之SQL语句简明教程---Subquery

    我们可以在一个 SQL 语句中放入另一个 SQL 语句.当我们在 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,我们就有一个 subquery 的架构. Subquery 的作用 ...

  7. cakephp , the subquery (2)

    Cakephp 框架帮我们做了很多的工作,的确省了我们很多工作,提高了效率. 但是,碰到一些比较复杂的查询时,还是有些问题,官方的cookbook api 有说明一些详细的用法,但感觉还是不太够,有些 ...

  8. cakephp , the subquery

    Cakephp 框架帮我们做了很多的工作,的确省了我们很多工作,提高了效率. 但是,碰到一些比较复杂的查询时,还是有些问题,官方的cookbook api 有说明一些详细的用法,但感觉还是不太够,有些 ...

  9. Subquery returns more than 1 row

    Subquery returns more than 1 row表示子查询返回了多行数据 例如: select * from table1 where table1.colums=(select co ...

随机推荐

  1. python 编程基础-字典类型和方法

    定义:字典是一种key-vlaue的数据类型. 字典特性KEY值必须是唯一,且可hash的(不可变数据类型),无索引,无序的(因为有KEY),查找速度快 语法:info = {'stu1101':&q ...

  2. python大战机器学习——数据降维

    注:因为公式敲起来太麻烦,因此本文中的公式没有呈现出来,想要知道具体的计算公式,请参考原书中内容 降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中 1.主成分分析(PCA) 将n ...

  3. Hive进阶_开发Hive的自定义函数

    Hive中的自定义函数简介 (1) 在类中创建自定义函数.自定义UDF需要继承'org.apache.hadoop.hive.ql.exec.UDF',实现evaluate函数,evaluate函数支 ...

  4. sql server replace函数巧妙完成字符串联结

    示例一: 需求:将'1,2,3,4,5,6,7,8,9,10'转成:'1','2','3','4','5','6','7','8','9','10' ),) set @s='1,2,3,4,5,6,7 ...

  5. nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点

    nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点 优点 所有的 web开发的点都考虑到了 agent 很有特色 文件夹规划到位 扩展能力优秀 缺点 最大的问题在于: 使用 ...

  6. MS-SQL 时间的操作

    1. 当前系统日期.时间 select getdate()  2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd ...

  7. Java基础:(四)继承

    一.访问权限 java中有三个访问权限修饰符private:protected:public和一个默认default(不加修饰符). 如果子类的方法覆盖了父类的方法,那么子类中该方法的访问级别不允许低 ...

  8. HBase数据模型(2)

    HBase数据模型(1) HBase数据模型(2) 1.0 HBase的版本version,是一个用长整型表示的.由Rowkey.Column(列族和列).Version组合在一起称为HBase中的一 ...

  9. 【extjs6学习笔记】1.8 初始: ExtJS命名约定

    Convention for Description Example Class 类名应该在CamelCase中 MyCustomClass 类名应包含字母数字字符. 如果属于技术术语,则允许使用数字 ...

  10. JavaScript空假值及其判断

    一.javaScript五种空值和假值 分别为undefined,null,false,"",0,这五个值的共同点是在执行if语句时都会执行false分支,执行对应的非语句的时候都 ...