должен иметь поле BirthDate со значениями тезисах:AVG возвращение нулевой, но я не
28 Juillet 1982 (I want this one to be excluded)
09/16/1981 (This one will be used)
(empty, should be excluded)
03/19/1953 (This one will be used)
Я хочу, чтобы получить средний возраст даты мм/дд/гггг. Сейчас мой запрос:
SELECT AVG(NULLIF(YEAR(NOW())-YEAR(Birthdate), 0)) AS AvgAge FROM `User`
Я также попытался:
SELECT AVG(YEAR(NOW())-YEAR(Birthdate)) AS AvgAge FROM `User`
Но результат всегда один и тот же: NULL
Каждый id_user, которые являются 100% Числовые имеют правильную мм/dd/yyyy, поэтому я также пробовал это:
SELECT AVG(CASE WHEN id_user >=0 THEN YEAR(NOW()) - YEAR(Birthdate) ELSE NULL END) AS AvgAge FROM `User`
И что:
SELECT AVG(CASE WHEN CEIL(id_user) = id_user THEN YEAR(NOW()) - YEAR(Birthdate) ELSE NULL END) AS AvgAge FROM `User`
Еще NULL ...
Есть ли у вас какие-либо идеи, почему она делает это?
Возможно, простая ошибка, но я не могу понять.
Спасибо!
ли VARCHAR или DateTime типа для этого столбца? – duffymo
Тип varchar – Kev
Это может быть вашей проблемой - функция YEAR знает, что делать с varchar? – duffymo