[SQL]連續三天有銷售額

店鋪       銷售日期    銷售額

A        2017-10-11    300
A        2017-10-12    200
B        2017-10-11    400
B        2017-10-12    200
A        2017-10-13    100
A        2017-10-15    100
C        2017-10-11    350
C        2017-10-15    400
C        2017-10-16    200
D        2017-10-13    500
E        2017-10-14    600
E        2017-10-15    500
D        2017-10-14    600
B        2017-10-13    300
C        2017-10-17    100

需求是:求出連續三天有銷售記錄的店鋪。sql

解法:函數

  尋找每一個店鋪是否連續三天都有銷售額,利用現有的表,構造一箇中間表,中間表既有當前日期的銷售額,又有當前日期後兩天的銷售額,而後篩選銷售額大於0的店鋪的名稱便可:spa

 

SELECT a.Name FROM sales a 
LEFT JOIN sales b
on a.name = b.name and
DATEDIFF(STR_TO_DATE(b.day,'%Y-%m-%d'),STR_TO_DATE(a.day,'%Y-%m-%d')) = 1
LEFT JOIN sales c
on b.name = c.name AND
DATEDIFF(STR_TO_DATE(c.day,'%Y-%m-%d'),STR_TO_DATE(b.day,'%Y-%m-%d')) = 1
WHERE a.amount > 0 AND b.amount > 0 AND c.amount > 0;

 

  能夠看到須要藉助str_to_date和datediff函數處理日期的差值,每一條記錄相鄰兩個日期在天數上依次添加1,不知足這樣條件的爲null值。咱們在此基礎上增長where條件過濾amount>0,並篩選出店鋪名稱便可。blog

相關文章
相關標籤/搜索