Средний возраст из поля DOB - MySQL / PHP
Я не был уверен, как я мог вычислить средний возраст моих контактов, которые все существуют в таблице mysql с полем даты DOB, таким как YYYY-MM-DD.
Есть ли способ сделать с вызовом MySQL (обратите внимание, я использую CakePHP, но это не должно быть проблемой)
Спасибо
4 ответа
Вы можете определить возраст с помощью DATEDIFF()
:
DATEDIFF(TO_DAYS(NOW()), TO_DAYS(DOB))
Среднее значение найдено в MySQL, используя AVG()
:
AVG(Column)
Так что объедините эти:
SELECT AVG(DATEDIFF(TO_DAYS(NOW()), TO_DAYS(DOB))) as `Average` FROM Contacts;
Обратите внимание, что это возвращает средний возраст в днях, а не в годах. Чтобы получить годы, вы можете усреднить летнюю часть каждой даты:
SELECT AVG(DATEDIFF(YEAR(NOW()), YEAR(DOB))) as `Average` FROM Contacts;
Или, как предложил @TimDearborn, разделите среднее значение дня на 365.242199.
Вам не нужно вводить датировку, если вы используете второй метод Бэйли Паркера. Просто вычтите годы и возьмите среднее.
SELECT AVG(YEAR(NOW())-YEAR(dob)) as `Average` FROM users;
Вот твой ответ
SELECT AVG(TIMESTAMPDIFF(YEAR, DOB, CURDATE())) AS `Average` FROM Contacts WHERE DOB IS NOT NULL;
Вот как я бы это сделал:
SQL
SELECT
AVG( YEAR(now()) - YEAR(<DOB_field>)) as avg_age
FROM <table_name>
WHERE <DOB_field> IS NOT NULL