mysql7天一跟蹤實現

2021-12-30 12:46:18 字數 1475 閱讀 6622

業務規制

每7天一跟蹤,如設定時間區間1月1日~1月18日中 1月8日、1月15日時出現「今天」跟蹤。如果今天是1月9日,但1-8沒有跟蹤則顯示1-8日。如果跟蹤顯示1-15。如果上乙個回合你沒有跟蹤顯示上一回合的時間。數學差就糾結。想了好久終於有乙個演算法。名詞與公式

跟蹤回合數:

這個表示記錄我的跟蹤的第幾個7天。比如1-8我跟蹤了標記跟回天數為1 (1月8日-1月1日)=7天 7/7=1 又如 (1月15日-1月1日)=14天 14/7=2

距今總天數:

是指設定的那天也就1月1日離今天多少天 。比如今天為 1月5日 這個值=(1月5日-1月1日)=4天

應該跟蹤日期=((跟蹤回合數+1)*7-距今總天數)

#查出7天一跟蹤的專案 並排序

select dp.id,dp.modifyappointmentdate,dp.nextvisittime,dp.prevvisittime,dp.confirmordertime,

date_add(sysdate(),interval ((ifnull(dp.followflag,0)+1)*7-datediff(sysdate(),dp.modifyappointmentdate)) day),

((ifnull(dp.followflag,0)+1)*7-datediff(sysdate(),dp.modifyappointmentdate)) as i,

dp.supervisorid, bu.cname_ as supervisorname,dp.customertel,dp.customername,dp.housevillage,dp.city, datediff(sysdate(),dp.modifyappointmentdate) days,

datediff(sysdate(),dp.modifyappointmentdate)%7 as followdays,dp.followflag,dc.customercar_username_

from dowell_project dp

left join bdf2_user bu on bu.username_ = dp.supervisorid

left join dowell_customer dc on dc.id = dp.customerid

where dp.`status` <> 4 and dp.supervisorid is not null and datediff(dp.nextvisittime,dp.modifyappointmentdate)>=7 and datediff(dp.nextvisittime, sysdate())>=0 and modifyappointmentdate is not null

order by case when days>=7 and followdays!=dp.followflag then 0 else 1 end desc

,followdays asc

mysql 7 普通索引與唯一索引的選擇

普通索引 唯一任務是加快對資料的訪問速度,因此,應該只為那些最經常出現在查詢條件 where column 或者排序條件 orderby column 中的資料列建立索引 唯一性索引 如果確定某個資料列只包含彼此各不相同的值,在為這個資料列建立索引的時候,就應該用關鍵字unique把它定義為乙個唯一...

一天乙個linux命令 (7)

1.建立使用者組 groupadd r g o r f groupname groupadd r group1 2.刪除使用者分組 groupdel group1 3.gpasswd a 將某個使用者添 組中 d 將某個使用者從群組中刪除 a 將群組的管理員許可權交給某個使用者 r 使群組的密碼失效...

一天一演算法(7) 刪除有序陣列的重複項

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...