mysql sql查询以避免日期总和中的周末

标签 mysql sql date

我试图得出任何雇主工作天数的总和,但是在这个总和中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/

相关文章:

PHP MySQL Count查询结果是字符串,不是整数

mysql - 按 desc 选择不同的值顺序

mysql - 如何对不起作用的三个表的外连接进行排序?

mysql - 从表中删除具有唯一 ID 的行

php - SQL 数据透视表与 dayValue [处理数据透视表中的日期] MYSQL-解决方案

ios - 通知每分钟触发 6 次(swift4)

postgresql - 同表两个日期之间的最大间隔

javascript - 在 Javascript 中设置日期格式

mysql - 对维度进行分组的 SQL 场景

javascript - 如何使用此方法循环遍历 mysql 数据库表