1

8 か月以内に働き始めたスタッフの平均給与を知りたいです。

コードを作成してみましたが、どういうわけかNULLが表示されます..

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

すべてがこの表の中にあります。

誰でも私を助けてもらえますか?何が間違っていたのかわかりません。ありがとう。

4

2 に答える 2

1

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';
于 2013-02-01T20:10:33.510 に答える
0

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);
于 2013-02-01T20:10:25.913 に答える