我想找到8个月内开始工作的员工的平均工资。
我尝试制作代码,但不知何故它显示 NULL..
SELECT AVG(salary) FROM Staff
WHERE salary = DATE_SUB(sWDate, INTERVAL 8 MONTH);
一切都在这个表中。
谁能帮我?我不确定我做错了什么。谢谢。
为什么salary = DATE_SUB(sWDate, INTERVAL 8 MONTH)
?
8个月内:
SELECT AVG(salary) FROM Staff
WHERE sWDate <= NOW() AND sWDate >= DATE_SUB(Now(), INTERVAL 8 MONTH);
-
Date_Sub
另一个:
SELECT AVG(salary) FROM Staff
WHERE sWDate <= NOW() AND sWDate >= DATE_ADD(Now(), INTERVAL -8 MONTH);
-
DATE_ADD
PS:最好根据sWDate
中的日期格式设置Now()
格式以获得精确的结果。否则,您可以使用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';
我认为您应该检查Date
字段而不是日期的薪水
SELECT AVG(salary) FROM Staff
WHERE [DateField] = DATE_SUB(NOW(), INTERVAL 8 MONTH);