我想找到8个月前开始工作的员工的平均工资。
我尝试制作代码,但不知怎的,它显示的是NULL ..
SELECT AVG(salary) FROM Staff
WHERE salary = DATE_SUB(sWDate, INTERVAL 8 MONTH);
一切都在这张桌子里。
有人可以帮帮我吗?我不确定我做错了什么。感谢。
答案 0 :(得分: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
。
e.g:
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';
答案 1 :(得分:0)
我认为你应该检查Date
字段而不是日期的薪资
SELECT AVG(salary) FROM Staff
WHERE [DateField] = DATE_SUB(NOW(), INTERVAL 8 MONTH);