leetcode題目
表 weather
+---------------+---------+
| column name | type |
+---------------+---------+
| id | int |
| recorddate | date |
| temperature | int |
+---------------+---------+
id 是這個表的主鍵
該錶包含特定日期的溫度資訊
編寫乙個 sql 查詢,來查詢與之前(昨天的)日期相比溫度更高的所有日期的 id 。
返回結果 不要求順序 。
查詢結果格式如下例:
weather
+----+------------+-------------+
| id | recorddate | temperature |
+----+------------+-------------+
| 1 | 2015-01-01 | 10 |
| 2 | 2015-01-02 | 25 |
| 3 | 2015-01-03 | 20 |
| 4 | 2015-01-04 | 30 |
+----+------------+-------------+
result table:
+----+
| id |
+----+
| 2 |
| 4 |
+----+
2015-01-02 的溫度比前一天高(10 -> 25)
2015-01-04 的溫度比前一天高(20 -> 30)
解答該題要求比較日期資料的差值。
1, 思路一: 錯誤思路, 直接對日期加一。 日期的月份和日是迴圈變化的,單純的加一無法做到迴圈。
select distinct a.id
from weather a, weather b
where a.recorddate = b.recorddate+1
and a.temperature > b.temperature;
思路二:datediff(a, b)日期函式,該函式返回a-b的天數差值。
select a.id
from weather a join weather b
on datediff(a.recorddate, b.recorddate) = 1
and a.temperature > b.temperature;
思路三: date_add()函式,對b日期加一天後再與a日期比較是否相等。優點是符合mysql高效查詢的原則(令等式左邊不出現算式,更好的利用索引)。
a.recorddate = date_add(b.recorddate, interval 1 day)
leetcode mysql 刪除重複的電子郵箱
1 題目 編寫乙個 sql 查詢,來刪除 person 表中所有重複的電子郵箱,重複的郵箱裡只保留 id 最小 的那個。id email 1 john example.com 2 bob example.com 3 john example.com id 是這個表的主鍵。例如,在執行你的查詢語句之後...
leetcode mysql 從不訂購的客戶
1 題目 某 包含兩個表,customers 表和 orders 表。編寫乙個 sql 查詢,找出所有從不訂購任何東西的客戶。customers 表 id name 1 joe 2 henry 3 sam 4 max orders 表 id customerid 1 3 2 1 例如給定上述 你的查...
627 交換工資 Leetcode Mysql
給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值。交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求只使用乙個更新 update 語句,並且沒有中間的臨時表。注意,您必只能寫乙個 update 語句,請不要編寫任何 select 語句。例如 id nam...