题目一、
Employee 表:
| Column Name | Type |
| id | int |
| salary | int |
id 是这个表的主键。
表的每一行包含员工的工资信息。
问题:获取并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null
解:1、分析题目,要求返回第二高的薪水,想到用order by排序并且用desc降序
select salary from employee order by salary desc limit 1,1;
2、如果最高薪水不止一人,则需要用distinct去重
select distinct salary from employee order by salary desc limit 1,1;
3、若不存在第二高则返回null,用ifnull
select ifnull ((select distinct salary from employee order by salary desc limit 1,1 ),null);
题目二、
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
| Id | Email |
| 1 | [email protected] |
| 2 | [email protected] |
| 3 | [email protected] |
根据以上输入,你的查询应返回以下结果:
| Email |
| [email protected] |
解:1、查找表中所有重复的电子邮箱,所以需要先按照邮箱名分组再根据每组的数量将大于一的组输出:select Email as Email