2017-06-01 69 views
0

我想出去任何僱主工作的日子的總和,但在這個總和MySQL計數一週的一天,所以結果並不確切。 如何避免在sum()函數中獲得星期幾?mysql sql查詢,以避免在一個日期總計日結束一天

我已經試過:

where mydate NOT IN ('Saturday', 'Sunday') 

,因爲我在其他的答案了類似的問題所看到的,但在這裏我使用一組功能,這意味着總和將where子句被調用之前進行評估。

這是我的查詢:

select pp.person_name,sum(ss.spread_sheet_date) as days 
    from spread_sheet ss 
    left join activity ac on ss.activity_id = ac.activity_id 
    left join person pp on pp.person_id = ss.person_id 
    where ac.activity_id is not null 
    group by ac.activity_id,pp.person_id ; 

,這是我的查詢使用NOT IN:

select pp.person_name,sum(ss.spread_sheet_date) as days 
    from spread_sheet ss 
    left join activity ac on ss.activity_id = ac.activity_id 
    left join person pp on pp.person_id = ss.person_id 
    where ac.activity_id is not null and ss.spread_sheet_date NOT IN ('Saturday', 'Sunday') 
    group by ac.activity_id,pp.person_id ; 

我還發現另外一個問題這個答案,我試圖用它

SELECT * 
FROM your_table 
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1) 

但它不起作用,我想這不是mysql兼容。

有人知道如何解決它嗎?

+1

請張貼的模式,樣本數據,當前結果和期望的結果 - 最好的SQLFiddle。 –

+0

這是一個普遍的問題 - 如何避免在星期日和星期六的日期總和。不需要架構 – putz

+0

您是否嘗試使用having子句? – Krismorte

回答

0

嗯:在你的部分查詢中,你認爲ss.spread_sheet_date是一個可以相加的數字(也許你的意思是計數?),在其他部分你把它當作日期。如果這真是一個日期,然後更改:

where ac.activity_id is not null and ss.spread_sheet_date NOT IN ('Saturday', 'Sunday') 

到:

where ac.activity_id is not null and DAYOFWEEK(ss.spread_sheet_date) NOT IN (1,7) 
相關問題