1

我想找到 8 个月前开始工作的员工的平均工资。

我尝试编写代码,但不知何故它显示为 NULL..

SELECT AVG(salary) FROM Staff  
WHERE salary = DATE_SUB(sWDate, INTERVAL 8 MONTH);

一切都在这张桌子内。

谁能帮帮我?我不确定我做错了什么。谢谢。

4

2 回答 2

1

为什么salary = DATE_SUB(sWDate, INTERVAL 8 MONTH)

8 个月内:

SELECT AVG(salary) FROM Staff  
WHERE sWDate <= NOW() AND sWDate >= DATE_SUB(Now(), INTERVAL 8 MONTH);

其他:

SELECT AVG(salary) FROM Staff  
WHERE sWDate <= NOW() AND sWDate >= DATE_ADD(Now(), INTERVAL -8 MONTH);

PS:最好Now()根据您拥有的日期格式进行格式化sWDate以获得精确的结果。否则你可以使用Year/Month.

例如:

SELECT AVG(salary) FROM Staff  
WHERE Date_Format(sWDate,'%Y-%m') <= Date_Format(NOW(),'%Y-%m') 
AND Date_Format(sWDate,'%Y-%m') >= Date_Format(DATE_ADD(Now(), INTERVAL -8 MONTH), '%Y-%m';
于 2013-02-01T20:10:33.510 回答
0

我认为您应该检查Date字段而不是日期的薪水

SELECT AVG(salary) FROM Staff  
WHERE [DateField] = DATE_SUB(NOW(), INTERVAL 8 MONTH);
于 2013-02-01T20:10:25.913 回答