LeetCode MySQL 刷题条记 (六)

114 阅读2分钟

「4月日新计划更文活动」

题目:197. 上升的温度

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| recordDate    | date    |
| temperature   | int     |
+---------------+---------+
id 是这个表的主键
该表包含特定日期的温度信息

需求

编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 id 。 返回结果 不要求顺序

解析

# Write your MySQL query statement below

select  w1.id id from weather w1 where w1.temperature >(select w2.temperature from weather w2 where datediff(w1.recordDate ,w2.recordDate) =1)

题目: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 的外键。
sales_id 是来自销售员表 sales_id 的外键。
该表的每一行包含一个订单的信息。这包括公司的 ID 、销售人员的 ID 、订单日期和支付的金额。

需求

编写一个SQL查询,报告没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。 以 任意顺序 返回结果表。

解析

# Write your MySQL query statement below

select name  from SalesPerson where  sales_id not in (select sales_id from  orders  where com_id in ( select com_id from Company where name = 'RED' ))

知识点

datediff 函数

  • 定义:Datediff函数通常用于计算两个日期之间的天数、月数或年数的差异
  • 语句格式DATEDIFF(datepart, startdate, enddate)
    • 其中,datepart是指定需要计算的差异部分的参数,比如:
      • "d" 表示计算两个日期之间的天数
      • "m" 表示计算两个日期之间的月份差异
      • "y" 表示计算两个日期之间的年份差异
    • startdatedatepart 分别是表示需要比较的两个日期的时间戳参数
  • 栗子🌰:197题目datediff(w1.recordDate ,w2.recordDate)由此计算出两个时间的差值

拓展

UNIX_TIMESTAMP 函数

  • 定义:可以将一个时间戳转换为UNIX时间戳格式
  • 语句格式UNIX_TIMESTAMP([datetime])
    • 其中 datetime参数是指定的日期和时间,可以是一个日期时间类型的字段或者一个日期时间字符串。如果未指定该参数,则默认使用当前系统时间
  • 栗子🌰:计算差值的时候可以用一个值减去另一个值,算出来的是两个值之间的差,以UNIX时间戳格式展示