题目1

Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。

+----+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
+----+-------+--------+--------------+
Department 表包含公司所有部门的信息。 +----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+
编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。 +------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| Sales | Henry | 80000 |
+------------+----------+--------+

相关

两个字段in的使用

代码

# Write your MySQL query statement below
select Department.Name as Department, Employee.Name as Employee,Salary
from Employee join Department
on Employee.DepartmentId = Department.Id
where (DepartmentId,Salary) in
(
select DepartmentId,Max(Salary) as Salary
from Employee
group by DepartmentId
)

题目2

编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。

+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。 +---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+

相关

limit beg,len 的使用

代码

# Write your MySQL query statement below
select (
select distinct Salary
from employee
order by Salary desc
limit 1,1
) as SecondHighestSalary

题目3

部门表 Department:

+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| revenue | int |
| month | varchar |
+---------------+---------+
(id, month) 是表的联合主键。
这个表格有关于每个部门每月收入的信息。
月份(month)可以取下列值 ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]。
  编写一个 SQL 查询来重新格式化表,使得新的表中有一个部门 id 列和一些对应 每个月 的收入(revenue)列。 查询结果格式如下面的示例所示: Department 表:
+------+---------+-------+
| id | revenue | month |
+------+---------+-------+
| 1 | 8000 | Jan |
| 2 | 9000 | Jan |
| 3 | 10000 | Feb |
| 1 | 7000 | Feb |
| 1 | 6000 | Mar |
+------+---------+-------+ 查询得到的结果表:
+------+-------------+-------------+-------------+-----+-------------+
| id | Jan_Revenue | Feb_Revenue | Mar_Revenue | ... | Dec_Revenue |
+------+-------------+-------------+-------------+-----+-------------+
| 1 | 8000 | 7000 | 6000 | ... | null |
| 2 | 9000 | null | null | ... | null |
| 3 | null | 10000 | null | ... | null |
+------+-------------+-------------+-------------+-----+-------------+ 注意,结果表有 13 列 (1个部门 id 列 + 12个月份的收入列)。

相关

题型:把数据行变为字段

if(条件,true执行,false执行)

代码

# Write your MySQL query statement below
select
id,
max(if(month = 'Jan',revenue,null)) as Jan_Revenue,
max(if(month = 'Feb',revenue,null)) as Feb_Revenue,
max(if(month = 'Mar',revenue,null)) Mar_Revenue,
max(if(month = 'Apr',revenue,null)) Apr_Revenue,
max(if(month = 'May',revenue,null)) May_Revenue,
max(if(month = 'Jun',revenue,null)) Jun_Revenue,
max(if(month = 'Jul',revenue,null)) Jul_Revenue,
max(if(month = 'Aug',revenue,null)) Aug_Revenue,
max(if(month = 'Sep',revenue,null)) Sep_Revenue,
max(if(month = 'Oct',revenue,null)) Oct_Revenue,
max(if(month = 'Nov',revenue,null)) Nov_Revenue,
max(if(month = 'Dec',revenue,null)) Dec_Revenue
from Department
group by id

题目4

Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。

+----+-------+--------+--------------+

| Id | Name | Salary | DepartmentId |

+----+-------+--------+--------------+

| 1 | Joe | 85000 | 1 |

| 2 | Henry | 80000 | 2 |

| 3 | Sam | 60000 | 2 |

| 4 | Max | 90000 | 1 |

| 5 | Janet | 69000 | 1 |

| 6 | Randy | 85000 | 1 |

| 7 | Will | 70000 | 1 |

+----+-------+--------+--------------+

Department 表包含公司所有部门的信息。

+----+----------+

| Id | Name |

+----+----------+

| 1 | IT |

| 2 | Sales |

+----+----------+

编写一个 SQL 查询,找出每个部门获得前三高工资的所有员工。例如,根据上述给定的表,查询结果应返回:

+------------+----------+--------+

| Department | Employee | Salary |

+------------+----------+--------+

| IT | Max | 90000 |

| IT | Randy | 85000 |

| IT | Joe | 85000 |

| IT | Will | 70000 |

| Sales | Henry | 80000 |

| Sales | Sam | 60000 |

+------------+----------+--------+

解释:

IT 部门中,Max 获得了最高的工资,Randy 和 Joe 都拿到了第二高的工资,Will 的工资排第三。销售部门(Sales)只有两名员工,Henry 的工资最高,Sam 的工资排第二。

相关

题型:分组前几

方法:自连接,找到比它高的distinct的数目。

题解

# Write your MySQL query statement below
select d.Name as Department, e1.Name as Employee, e1.Salary
from Employee e1 join Department d
on e1.DepartmentId = d.Id
where (
select count(distinct e2.Salary)
from Employee e2
where e2.Salary > e1.Salary
and e2.DepartmentId = e1.DepartmentId
) < 3

题目5

编写一个 SQL 查询来实现分数排名。

如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。

+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列): +-------+------+
| Score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+

相关

排第几,同题目4思路,找distinct比它高的。

此外,查询结果作为字段。

为区别关键字Rank 需要将别名'Rank'加引号

代码

# Write your MySQL query statement below
select s1.Score,(
select count(distinct s2.Score)
from Scores s2
where s2.Score >= s1.Score)as 'Rank'
from Scores s1
order by s1.Score DESC

最新文章

  1. JavaWeb表单数据的获取方式
  2. 使用Spire.Barcode程序库生成二维码
  3. Java基础之集合与泛型
  4. 深入Docker
  5. AngularJS概述&amp;指令
  6. assign() 方法
  7. js 自带的 filter()方法
  8. 在VS2012中编译WinXP兼容的程序
  9. poj 1611 The Suspects 并查集
  10. memcached学习笔记5--socke操作memcached 缓存系统
  11. 捕获JS 错误日志
  12. Android 者开发如何选择测试机列表
  13. Django 下static的配置
  14. C# ADO.NET参数查询
  15. ubuntu如何安装Mac主题
  16. 【深度学习】吴恩达网易公开课练习(class2 week1)
  17. 【读书笔记】iOS-Nib的一些知识
  18. luogu1984 烧水问题 (找规律)
  19. linux tmux 工具使用 tmux.conf 文件
  20. JdbcTemplate查询返回JavaBean的几种方法

热门文章

  1. 数据库课程设计:SQL Server + Express + node.js + ejs 论坛管理系统
  2. 详解Python Graphql
  3. 编译Uboot时出错:【已解决】 /bin/bash: arm-linux-gcc: command not found dirname: missing operand Try &#39;dirname --help&#39; for more information.
  4. JavaScript学习系列博客_21_JavaScript 变量、函数的提前声明
  5. 4.oracle sql*plus常用命令
  6. 贫血模型和DDD模型
  7. Ceph Luminous手动解决pg分布不均衡问题
  8. 第二篇Scrum冲刺博客--Interesting-Corps
  9. 03 . Go开发一个日志平台之Elasticsearch使用及kafka消费消息发送到Elasticsearch
  10. Kubernetes Operator基础入门