8 か月以内に働き始めたスタッフの平均給与を知りたいです。
コードを作成してみましたが、どういうわけかNULLが表示されます..
SELECT AVG(salary) FROM Staff
WHERE salary = DATE_SUB(sWDate, INTERVAL 8 MONTH);
すべてがこの表の中にあります。
誰でも私を助けてもらえますか?何が間違っていたのかわかりません。ありがとう。
Why salary = DATE_SUB(sWDate, INTERVAL 8 MONTH)
?
WITHIN 8 MONTHS:
SELECT AVG(salary) FROM Staff
WHERE sWDate <= NOW() AND sWDate >= DATE_SUB(Now(), INTERVAL 8 MONTH);
Another:
SELECT AVG(salary) FROM Staff
WHERE sWDate <= NOW() AND sWDate >= DATE_ADD(Now(), INTERVAL -8 MONTH);
PS: It's best that you format Now()
according to the date format you have in sWDate
to get precise results. Otherwise you can use 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';
i think you should check Date
field and not Salary for date
SELECT AVG(salary) FROM Staff
WHERE [DateField] = DATE_SUB(NOW(), INTERVAL 8 MONTH);