【LeetCode SQL练习笔记】

SQL 笔记记录

    • [1. 简单](#1. 简单)
      • [175. 组合两张表](#175. 组合两张表)
      • [181. 超过经理收入的员工*](#181. 超过经理收入的员工*)
      • [182. 查找重复的电子邮箱](#182. 查找重复的电子邮箱)

1. 简单

175. 组合两张表

java 复制代码
编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空  null 。
答:题目中要求两张表,Address中的报告可以为空,要显示Person表的数据,很容易想到左连接,把Person当成主表然后left join 即可。
代码:
select p.Firstname,p.LastName,a.City,a.State from Person p left join Address a on p.PersonId=a.PersonId; 

181. 超过经理收入的员工*

java 复制代码
编写一个SQL查询来查找收入比经理高的员工。以 任意顺序 返回结果表。
答:这道题因为要查询的条件都在一张表里,所以可以使用自连接,将一张表当成两张表来使用
代码:
SELECT
    a.name AS Employee
FROM
    Employee AS a JOIN Employee AS b
    ON a.managerId = b.id
    AND a.salary > b.salary


或者可以使用笛卡尔积,然后筛选出满足条件的结果;
代码:
SELECT
    a.name AS Employee
FROM
    Employee AS a,
    Employee AS b
WHERE
    a.managerId = b.id
        AND a.salary > b.salary

182. 查找重复的电子邮箱

java 复制代码
编写一个 SQL 查询来报告所有重复的电子邮件。 请注意,可以保证电子邮件字段不为 NULL。
答:要求查找重复邮箱,首先可以想到以邮箱分组,组中条数多余1的自然是重复的。
代码:使用group by
:select Email from
(
  select Email, count(Email) as num
  from Person
  group by Email
) as  a 
where num > 1
;
或者group by 加having过滤
select Email
from Person
group by Email
having count(Email) > 1; 
相关推荐
szial1 小时前
深入理解SQL模糊查询中的特殊字符处理——以DB2为例
数据库·sql
青云交1 小时前
大数据新视界 --大数据大厂之数据质量评估指标与方法:提升数据可信度
大数据·sql·一致性·完整性·数据质量评估·数据可信度·准确性·时效性
王俊山IT2 小时前
C++学习笔记----8、掌握类与对象(五)---- 嵌套类与类中枚举
开发语言·c++·笔记·学习
闫铁娃2 小时前
二分解题的奇技淫巧都有哪些,你还不会吗?
c语言·数据结构·c++·算法·leetcode
小码狐3 小时前
并查集【数据结构与算法】【C语言版-笔记】
数据结构·笔记·并查集·c语言版
CV工程师小林3 小时前
【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(下篇)
数据结构·c++·算法·leetcode·深度优先·剪枝
OLDERHARD4 小时前
Java - LeetCode面试经典150题 - 矩阵 (四)
java·leetcode·面试
Themberfue4 小时前
基础算法之双指针--Java实现(下)--LeetCode题解:有效三角形的个数-查找总价格为目标值的两个商品-三数之和-四数之和
java·开发语言·学习·算法·leetcode·双指针
LearnTech_1235 小时前
【学习笔记】手写一个简单的 Spring MVC
笔记·学习·spring·spring mvc
陈序缘5 小时前
LeetCode讲解篇之322. 零钱兑换
算法·leetcode·职场和发展