Mysql計算相鄰兩兩記錄某個字段的最大差值

計算相鄰兩兩記錄某個字段的最大差值

需求一個患者有多條病程記錄,查詢該患者的 最大檢查間隔。即求兩兩記錄的最大檢查間隔(天數)。

注1:其中檢查時間是 case_Record表中的create_time字段,其中user_id是患者編號。
注2:下文的@符號是mysql的@變量標識。SELECT @rownum:=0就是把0賦值給rownum變量。

初始:
62號患者的各個時間病程檢查時間如下。
在這裏插入圖片描述

第一步:
爲患者的病程記錄進行編號,作爲第一個表。

SELECT @rownum:=@rownum+1 rn1,create_time
from case_record,(SELECT @rownum:=0)rownum
WHERE case_record.user_id = 62
在這裏插入圖片描述


第二步:
爲患者的病程記錄進行編號,作爲第二個表。操作和第一步一樣。

第三步
將第一個表和第二個表進行關聯,同時添加兩個表的表記錄對應的行號邏輯(即第一個表的表記錄行號 = 第二個表的表記錄行號-1)

SELECT *
FROM
(SELECT @rownum:=@rownum+1 rn1,create_time
from case_record,(SELECT @rownum:=0)rownum
WHERE case_record.user_id = 62) t1,
(SELECT @rownum2:=@rownum2+1 rn2,create_time
from case_record,(SELECT @rownum2:=0)rownum2
WHERE case_record.user_id = 62)t2
WHERE rn1=rn2-1
在這裏插入圖片描述








第四步
最後計算兩兩記錄的最大檢查間隔(單位:天數)。
SELECT MAX(ABS(TIMESTAMPDIFF(DAY,t1.create_time,t2.create_time)))
FROM
(SELECT @rownum:=@rownum+1 rn1,create_time
from case_record,(SELECT @rownum:=0)rownum
WHERE case_record.user_id = 62) t1,
(SELECT @rownum2:=@rownum2+1 rn2,create_time
from case_record,(SELECT @rownum2:=0)rownum2
WHERE case_record.user_id = 62)t2
WHERE rn1=rn2-1
在這裏插入圖片描述










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章