編寫乙個 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)
mysql中有datediff函式,求兩個日期的天數差集
datediff(被減數, 減數)
例如:
select datediff(
'2020-12-14'
,'2020-12-13'
)as diffdate
1
select datediff(
'2020-12-13'
,'2020-12-14'
)as diffdate
1
②
@定義使用者變數
@@引用或定義全域性變數
=只有在set和update時才是和:=一樣,賦值的作用,其它都是等於的作用
:=不只在set和update時時賦值的作用,在select也是賦值的作用
因此用變數實現行號時,必須用:=
1.weather**做自聯結,連線條件需要同時滿足』溫度關係『&』日期差異『,從鏈結後的**查詢出所有id
2.定義日期、溫度變數,迴圈利用布林標誌符判斷
基本查詢
select a.id
from weather as a
join weather as b
on a.temperature > b.temperature and datediff(a.recorddate,b.recorddate)
=1
變數
select
idfrom
(select w.*,
@curd := w.recorddate,
@curt := w.temperature,
@ish :=
if(datediff(
@curd
,@pred)=
1and
@curt
>
@pret,1
,0)as r,
@pret :=
@curt
,@pred :=
@curd
-- @pret := w.temperature, 與上方等價
-- @pred := w.recorddate 與上方等價
from weather as w
order
by w.recorddate
) twhere
t.r =
1
SQL每日刷題 條件判斷
給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值。交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求只使用乙個更新 update 語句,並且沒有中間的臨時表。注意,您必只能寫乙個 update 語句,請不要編寫任何 select 語句。例如 idname...
SQL每日刷題 異或 交換奇偶
小美是一所中學的資訊科技老師,她有一張 seat 座位表,平時用來儲存學生名字和與他們相對應的座位 id。其中縱列的 id 是連續遞增的 小美想改變相鄰倆學生的座位。你能不能幫她寫乙個 sql query 來輸出小美想要的結果呢?示例 id student 1 abbot 2 doris 3 eme...
每日刷題 打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 例 1 輸入...