Как получить информацию за каждый день, используя группу по ключевому слову в MySQL - PullRequest
0 голосов
/ 13 мая 2011

Я новичок в MySQL, и в настоящее время у меня проблема с запросом.Мне нужно получить среднюю продолжительность каждого занятия каждый день в течение недели.Формат даты похож на «2000-01-01 01:01:01», но я хочу избавиться от 01:01:01 и заботиться только о дате.Как мне это сделать?

Таблица выглядит примерно так:

record_id   int(10)      NOT NULL,
activity_id varchar(100) NOT NULL,
start_time  datetime     NOT NUll,
end_time    datetime     NOT NULL,
duration    int(10)      NOT NULL;

Спасибо.

Ответы [ 3 ]

0 голосов
/ 13 мая 2011

Вы можете сделать что-то вроде следующего

select activity_id, dayofweek(datetime) as day, avg(duration) as average
from table_name  where datetime between start_date and end_date
group by activity_id,dayofweek(datetime)
0 голосов
/ 13 мая 2011

Вы можете использовать date_format (end_time, '% Y% m% d') , чтобы преобразовать его в сортируемое значение по дням. Поместите это в группу по выражению, и это должно делать то, что вы хотите.

0 голосов
/ 13 мая 2011

Если я понимаю, вы хотите сгруппировать по разным временам активности и посмотреть средние дни между началом и концом каждого действия. Это должно сделать это для вас.

SELECT activity_id, avg(DATEDIFF(end_time, start_time)) AS Average 
FROM tablename 
GROUP BY activity_id, DAYOFWEEK(start_time)

Редактировать: Неправильно понято, вы также хотите, чтобы оно было разбито по дням, так что это должно охватить каждую группу, разбито по дням недели, на которые начинается start_time, а затем по средним дням между start_time и end_time.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...