锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【LeetCode-SQL专项突破】-第6天:多表关联

时间:2022-09-25 00:00:00 amy限时继电器

???
大家好,我是【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

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章