175. Combine Two Tables

使用外连接即可。

# Write your MySQL query statement below
select FirstName, LastName, City, State from Person left outer join Address on Person.PersonId = Address.PersonId; # Write your MySQL query statement below
select p.FirstName, p.LastName, a.City, a.State from Person as p left outer join Address as a on p.PersonId = a.PersonId;

176. Second Highest Salary

查询第二高工资值,可能无此值。使用聚集函数与子查询即可,注意MAX可能返回NULL。

# Write your MySQL query statement below
select max(Salary) as SecondHighestSalary from Employee where Salary < (select max(Salary) from Employee); # Write your MySQL query statement below
select max(Salary) as SecondHighestSalary from Employee where Salary not in(select max(Salary) from Employee);

177. Nth Highest Salary

查询第N高工资值,可能无此值。使用IFNULL,然后再对结果进行限制即可。

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M = N - 1;
RETURN (
# Write your MySQL query statement below.
SELECT IFNULL((SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT M, 1), NULL)
);
END

178. Rank Scores

按得分排名并计算排名。使用子查询、聚集函数,然后再对结果进行排序即可。

# Write your MySQL query statement below
select Scores.Score, (select count(*) from (select distinct Score from Scores) as DistinctScores where DistinctScores.Score >= Scores.Score) as Rank from Scores order by Score desc; # Write your MySQL query statement below
select Scores.Score, count(DistinctScores.Score) as Rank from Scores, (select distinct Score from Scores) as DistinctScores where Scores.Score <= DistinctScores.Score group by Scores.Id, Scores.Score order by Scores.Score desc;

180. Consecutive Numbers

找出至少连续出现3次的Num。先排序,再查询即可。也有人使用变量来解答。

# Write your MySQL query statement below
select distinct(l1.Num) as ConsecutiveNums from Logs l1, Logs l2, Logs l3 where l1.Id + 1 = l2.Id and l1.Id + 2 = l3.Id and l1.Num = l2.Num and l1.Num = l3.Num;

181. Employees Earning More Than Their Managers

查询工资比上司高的员工。使用自连接即可。

# Write your MySQL query statement below
select e1.Name as Employee from Employee as e1, Employee as e2 where e1.ManagerId = e2.Id and e1.Salary > e2.Salary;

182. Duplicate Emails

查找表中有重复的emails。使用数据分组或自连接即可。

# Write your MySQL query statement below
select Email from Person group by Email having count(*) > 1; # Write your MySQL query statement below
select distinct(p1.Email) from Person as p1, Person as p2 where p1.Id != p2.Id and p1.Email = p2.Email;

183. Customers Who Never Order

查出没有订单的客户。使用数据过滤即可。

# Write your MySQL query statement below
select Name as Customers from Customers where Customers.Id not in (select distinct(CustomerId) from Orders);

184. Department Highest Salary

查询每个部内最高的工资,最高工资可能有多个员工。这题相对来说稍复杂,使用子查询与数据分组来解决。

# Write your MySQL query statement below
select Department.Name as Department, Employee.Name as Employee, max(Salary) as Salary from Employee, Department where Employee.DepartmentId = Department.Id;
# 错误解法,结果会出现[null, null, null]这种情况 # Write your MySQL query statement below
select Department.Name as Department, Employee.Name as Employee, Salary from Employee, Department where Employee.DepartmentId = Department.Id order by Salary limit 1;
# 错误解法,结果只会有一行 # Write your MySQL query statement below
select d.Name as Department, e.Name as Employee, e.Salary as Salary
from Department as d, (select Name, max(Salary) as Salary, DepartmentId from Employee group by DepartmentId) as e
where d.Id = e.DepartmentId;
# 错误解法,当同一部门有两个最高的Salary时候,结果只有一行,故必须使用下面解法,使用2个Employee表 # Write your MySQL query statement below
select d.Name as Department, e.Name as Employee, e.Salary as Salary
from Department as d, Employee as e, (select max(Salary) as Salary, DepartmentId from Employee group by DepartmentId) as h
where d.Id = h.DepartmentId and e.Salary = h.Salary and e.DepartmentId = h.DepartmentId;

LeetCode Database题解的更多相关文章

  1. LeetCode OJ 题解

    博客搬至blog.csgrandeur.com,cnblogs不再更新. 新的题解会更新在新博客:http://blog.csgrandeur.com/2014/01/15/LeetCode-OJ-S ...

  2. Leetcode 简略题解 - 共567题

    Leetcode 简略题解 - 共567题     写在开头:我作为一个老实人,一向非常反感骗赞.收智商税两种行为.前几天看到不止两三位用户说自己辛苦写了干货,结果收藏数是点赞数的三倍有余,感觉自己的 ...

  3. LeetCode 算法题解 js 版 (001 Two Sum)

    LeetCode 算法题解 js 版 (001 Two Sum) 两数之和 https://leetcode.com/problems/two-sum/submissions/ https://lee ...

  4. leetcode & lintcode 题解

    刷题备忘录,for bug-free 招行面试题--求无序数组最长连续序列的长度,这里连续指的是值连续--间隔为1,并不是数值的位置连续 问题: 给出一个未排序的整数数组,找出最长的连续元素序列的长度 ...

  5. LeetCode一句话题解

    深度优先搜索 人生经验 1. 需要输出所有解.并由于元素集有重复元素,要求返回的结果需要去重的情况,可考虑使用值对应数量的map,然后分别考虑依次取不同数量该值的可能. LeetCode39 题目:给 ...

  6. [leetcode] 位操作题解

    子集 题目[78]:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 示例: 输入: nums = [1,2,3] 输出: [ [3],   [1],   [2],   [ ...

  7. LeetCode 中等题解(3)

    34 在排序数组中查找元素的第一个和最后一个位置 Question 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂 ...

  8. LeetCode 中等题解(1)

    16 最接近的三数之和 Question 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和. ...

  9. leetcode database题目

    LeetCode有10道SQL的题目,最近学习SQL语言,顺便刷题强化一下, 说实话刷完SQL学习指南这本书,不是很难,上面的例子 跟语法规则我都能理解透, 实际中来做一些比较难的业务逻辑题,却一下子 ...

随机推荐

  1. CSS中margin和position:relative的定位问题

    一.代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  2. css Loading 教程

    http://www.cnblogs.com/lhb25/p/loading-spinners-animated-with-css3.html

  3. 获取一个gridcontrol的数据行数

    ((DataTable)gc_excel.DataSource).Rows.Count;

  4. HDU 3265 Posters

    矩形面积并,一个拆成四个 #include<cstdio> #include<cstring> #include<cmath> #include<map> ...

  5. 解决IE6中PNG图出现灰色背景问题

    第 1 种方法:定义一个样式,给某个div应用这个样式后,div的透明png背景图片自动透明了.(注意两处图片的路径写法不一样,本例中,icon_home.png图片与html文件在相同目录) < ...

  6. Linux命令 理解

    RPM常用命令参数列表 1.安装一个包 # rpm -ivh 2.升级一个包 # rpm -Uvh  [注意U一定要大写] -i   安装 -U  升线安装 -h  以#显示安装进度 -v  显示附加 ...

  7. find命令--xargs--exec

    find命令 1.1.find命令选项-name 按照文件名查找-perm 按照文件权限来查找-prune 可以使用find命令排除当前文件夹,不查找-user 可以按照文件属主来查找-group 可 ...

  8. [iOS Animation]-CALayer 图像IO

    图像IO 潜伏期值得思考 - 凯文 帕萨特 在第13章“高效绘图”中,我们研究了和Core Graphics绘图相关的性能问题,以及如何修复.和绘图性能相关紧密相关的是图像性能.在这一章中,我们将研究 ...

  9. Java设计模式遵循的七大原则

    最近几年来,人们踊跃的提倡和使用设计模式,其根本原因就是为了实现代码的复用性,增加代码的可维护性.设计模式的实现遵循了一些原则,从而达到代码的复用性及增加可维护性的目的,设计模式对理解面向对象的三大特 ...

  10. CSS中link与import的区别

    一.import的用法 1,在html文件中 <style type="text/css"> @import url(http://www.dreamdu.com/st ...