Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / AVG(TIMEDIFF()) почему то не работает / 5 сообщений из 5, страница 1 из 1
16.11.2021, 16:10
    #40112360
eluzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AVG(TIMEDIFF()) почему то не работает
То ли я дурак, то ли лыжи не едут...конечно первое.
Есть такой запрос, который дает верный результат в плане TIMEDIFF (на картинке)

SELECT
advertisement_id,
users.username AS никнэйм,
TIMEDIFF(trades.created_at, advertisements.created_at) AS принятие_сделки,
TIMEDIFF(trades.paid_created, trades.created_at) AS оплата_сделки,
TIMEDIFF(trades.updated_at, trades.paid_created) AS заключение_сделки
FROM users
LEFT JOIN advertisements ON users.id = advertisements.user_id
LEFT JOIN trades ON advertisements.id = trades.advertisement_id
WHERE trades.status = 'closed'
ORDER BY 2

но мне надо высчитать среднее время по всем трем пунктам, я добавил AVG и group by

SELECT
advertisement_id,
users.username AS никнэйм,
AVG(TIMEDIFF(trades.created_at, advertisements.created_at)) AS принятие_сделки,
AVG(TIMEDIFF(trades.paid_created, trades.created_at)) AS оплата_сделки,
AVG(TIMEDIFF(trades.updated_at, trades.paid_created)) AS заключение_сделки
FROM users
LEFT JOIN advertisements ON users.id = advertisements.user_id
LEFT JOIN trades ON advertisements.id = trades.advertisement_id
WHERE trades.status = 'closed'
GROUP BY 2
ORDER BY 2

но результат совсем не тот, не понимаю, что я делаю не так
...
Рейтинг: 0 / 0
16.11.2021, 16:14
    #40112361
eluzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AVG(TIMEDIFF()) почему то не работает
Вот то, что я получаю при добавлении AVG
...
Рейтинг: 0 / 0
16.11.2021, 17:07
    #40112370
Агрох
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AVG(TIMEDIFF()) почему то не работает
Время на самом деле хранится в формате Float и AVG float и вернула. Чтобы опять получить время надо сделать соответствующий каст.
...
Рейтинг: 0 / 0
16.11.2021, 23:03
    #40112419
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AVG(TIMEDIFF()) почему то не работает
Не все так просто:
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html The SUM() and AVG() aggregate functions do not work with temporal values. (They convert the values to numbers, losing everything after the first nonnumeric character.) To work around this problem, convert to numeric units, perform the aggregate operation, and convert back to a temporal value. Examples:


SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROM tbl_name;
SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;
...
Рейтинг: 0 / 0
17.11.2021, 01:00
    #40112433
eluzh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AVG(TIMEDIFF()) почему то не работает
miksoft
Не все так просто:
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html The SUM() and AVG() aggregate functions do not work with temporal values. (They convert the values to numbers, losing everything after the first nonnumeric character.) To work around this problem, convert to numeric units, perform the aggregate operation, and convert back to a temporal value. Examples:


SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROM tbl_name;
SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;


Премного благодарен. Заработало. А мне говорили, что достаточно освоить select, from, Where и считай знаешь sql 🤦🏻‍♂️
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / AVG(TIMEDIFF()) почему то не работает / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]