【LeetCode-SQL专项突破】-第6天:多表关联
时间:2022-09-25 00:00:00
???
大家好,我是【IT江湖人称邦德jeames007,10年DBA工作经验
【大数据领域博主】上进心十足
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
擅长主流数据Oracle、MySQL、PG 运维开发、备份恢复、安装迁移、性能优化、故障应急处理等。
? 如果你对数据库感兴趣,欢迎关注【IT邦德
???感谢大家的大可爱小可爱
文章目录
- 前言
-
- 197. 上升的温度
- 607. 销售员
前言
SQL每个人都必须使用它,但它不是用来衡量产出的SQL你需要使用这个工具来创造其他价值。197. 上升的温度
表: Weather --------------- --------- | Column Name | Type | --------------- --------- | id | int | | recordDate | date | | temperature | int | --------------- --------- id 是这个表的主键 该表包含特定日期的温度信息 编写一个 SQL 查询,与之前(昨天)的日期相比,查找所有温度较高的日期 id 。 返回结果 不要求顺序 。 返回结果 不要求顺序 。 查询结果格式如下。 示例 1: 输入: Weather 表: ---- ------------ ------------- | id | recordDate | Temperature | ---- ------------ ------------- | 1 | 2015-01-01 | 10 | | 2 | 2015-01-02 | 25 | | 3 | 2015-01-03 | 20 | | 4 | 2015-01-04 | 30 | ---- ------------ ------------- 输出: ---- | id | ---- | 2 | | 4 | ---- 解释: 2015-01-02 温度高于前一天(10 -> 25) 2015-01-04 的温度比前一天高(20 -> 30) ????? 答案 # Write your MySQL query statement below select a.Id from Weather as a join Weather as b on a.Temperature > b.Temperature and dateDiff(a.RecordDate,b.RecordDate) = 1 /* Write your T-SQL query statement below */ SELECT w2.id AS 'Id' FROM Weather w1, Weather w2 WHERE DATEDIFF(day, w1.RecordDate, w2.RecordDate) = 1 AND w1.Temperature < w2.Temperature; /* Write your PL/SQL query statement below */ select id "id" from ( select id, Temperature, lag(Temperature) over(order by recordDate) dk from Weather ) where Temperature>dk
607. 销售员
?? 表: SalesPerson ----------------- --------- | Column Name | Type | ----------------- --------- | sales_id | int | | name | varchar | | salary | int | | commission_rate | int | | hire_date | date | ----------------- --------- sales_id 是表的主键列。 表的每一行都显示了销售人员的姓名和 ID ,以及他们的工资、佣金率和就业日期。 表: Company ------------- --------- | Column Name | Type | ------------- --------- | com_id | int | | name | varchar | | city | varchar | ------------- --------- com_id 是表的主键列。 该表的每一行都表示公司的名称和 ID ,以及公司所在的城市。 表: Orders ------------- ------ | Column Name | Type | ------------- ------ | order_id | int | | order_date | date | | com_id | int | | sales_id | int | | amount | int | ------------- ------ order_id 是表的主键列。 com_id 是 Company 表中 com_id 的外键。 com_id 是 Company 表中 com_id 的外键。 sales_id 来自销售员表 sales_id 的外键。 该表的每一行都包含订单信息。包括公司的 ID 、销售人员的 ID 、订单日期和支付金额。 ?? 需求 编写一个SQL查询,报告没有名称 “RED” 所有销售人员的所有销售人员姓名。 以任意顺序 返回结果表。 查询结果格式如下所示。 示例: 输入: SalesPerson 表: ---------- ------ -------- ----------------- ------------ | sales_id | name | salary | commission_rate | hire_date | ---------- ------ -------- ----------------- ------------ | 1 | John | 100000 | 6 | 4/1/2006 | | 2 | Amy | 12000 | 5 | 5/1/2010 | | 3 | Mark | 65000 | 12 | 12/25/2008 | | 4 | Pam | 25000 | 25 | 1/1/2005 | | 5 | Alex | 5000 | 10 | 2/3/2007 | ---------- ------ -------- ----------------- ------------ Company 表: -------- -------- ---------- | com_id | name | city | -------- -------- ---------- | 1 | RED | Boston | | 2 | ORANGE | New York | | 3 | YELLOW | Boston | | 4 | GREEN | Austin | -------- -------- ---------- Orders 表: ---------- ------------ -------- ---------- -------- | order_id | order_date | com_id | sales_id | amount | ---------- ------------ -------- ---------- -------- | 1 | 1/1/2014 | 3 | 4 | 10000 | | 2 | 2/1/2014 | 4 | 5 | 5000 | | 3 | 3/1/2014 | 1 | 1 | 50000 | | 4 | 4/1/2014 | 1 | 4 | 25000 | ---------- ------------ -------- ---------- -------- 输出: ------ | name | ------ | Amy | | Mark | | Alex | ------ 解释: 根据表 orders 中的订单 '3' 和 '4' ,容易看出只有 'John' 和 'Pam' 两个销售人员曾经向公司 'RED' 销售过。 所以我们需要输出表 salesperson 所有其他人的名字。 所以我们需要输出表 salesperson 所有其他人的名字。 ???? 答案 # Write your MSQL query statement below
select a.name from SalesPerson a where not exists (
select n.name from Orders m,Company n
where m.com_id = n.com_id
and n.name = 'RED'
and m.sales_id = a.sales_id)
/* Write your T-SQL query statement below */
select a.name from SalesPerson a where not exists (
select n.name from Orders m,Company n
where m.com_id = n.com_id
and n.name = 'RED'
and m.sales_id = a.sales_id)
/* Write your T-SQL query statement below */
select a.name from SalesPerson a where sales_id not in (
select m.sales_id from Orders m,Company n
where m.com_id = n.com_id
and n.name = 'RED'
and m.sales_id = a.sales_id)
体系化学习SQL,请关注CSDN博客
https://blog.csdn.net/weixin_41645135/category_11653817.html