我试图得出任何雇主工作天数的总和,但是在这个总和中mysql计算的是工作日,所以结果不准确。 如何避免在 sum() 函数中获取工作日?
我尝试过:
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 不兼容。
有谁知道怎么解决吗?
最佳答案
嗯:在查询的一部分中,您将 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)
关于mysql sql查询以避免日期总和中的周末,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44307949/