還是昨天的問題,統計每周内問題小區連續出現天數,MySQL可以實作嗎?答案是肯定的,就是過程很曲折。
資料庫查詢語言基本都是針對整列的,不像
excel
是單元格粒度的,要判斷行與行之間的差異比較麻煩。
建表語句如下:
1
插入資料
1
表是這樣的
1mysql>
現在使用一種算法來判決每周持續出現,用
week()
擷取日期所在周數,使用下圖的邏輯判斷連續出現

- 首先擷取目前日期與一個較早的日期的內插補點
- 計算表中大于等于目前日期的行數
- 兩個值求和,求和相等則為連續出現,否則為間隔出現
SQL 呼之欲出
1mysql>
得到了
diff
和
rows
,将兩者相加,然後按照該列分組計數就是持續天數,再加上周數,就是每周持續天數完整代碼如下:
1mysql>
如上,利用
MySQL
擷取了每周連續出現天數,感覺怎麼樣?
End
往期精彩:
本号精華合集(二)
精通 SQL 程式設計,你卻隻用來拉資料
偏見的背後,是你想象不到的無知