2013-09-25 99 views
0

這裏是sqlfiddle,我與MySQL查詢作出 http://sqlfiddle.com/#!2/f2794/4計數連續數時數爲= 0或> 10

它計數,連續10天,當存在= 0,但我需要第二條件添加到計數,當存在是> 10

例如

應該算14

這裏是查詢

select sum(count) total from (

SELECT COUNT(present) as count FROM (
SELECT 
IF((q.present != 0), @rownum:[email protected]+1, @rownum:[email protected]) AS rownumber, @prevDate:=q.date, q.* 
FROM (
SELECT 
name 
, date 
, present 
FROM 
teacher, (SELECT @rownum:=0, @prevDate:='') vars 
WHERE date BETWEEN '2013-07-01' AND '2013-07-31' 
ORDER BY date, present 
) q 
) sq 
GROUP BY present, rownumber 
HAVING COUNT(*) >= 10 

) d 

所以如果u能幫助我,請做到這一點:)

最好的問候 米。

回答

0

我真的不明白你的查詢過於好,但我想簡單地改變(q.Present!= 0),以納入更多的測試應該可以解決你的問題:

SELECT sum(count) total from (
    SELECT COUNT(present) as count FROM (
    SELECT 
     IF((q.present != 0 AND q.present <= 10), @rownum:[email protected]+1, @rownum:[email protected]) AS rownumber, @prevDate:=q.date, q.* 
    FROM (
     SELECT 
     name 
     , date 
     , present 
     FROM 
     teacher, (SELECT @rownum:=0, @prevDate:='') vars 
     WHERE date BETWEEN '2013-07-01' AND '2013-07-31' 
     ORDER BY date, present 
    ) q 
) sq 
    GROUP BY present, rownumber 
    HAVING COUNT(*) >= 10 
) d 
+0

嘿,感謝的嘗試,但它不工作,請在sqlfiddle上嘗試此查詢,您會看到沒有任何事情發生,並且沒有計數14天。所以我需要嘗試另一個查詢。 – Kenny