SELECT
COUNT(t1.tid) AS count,
u.user_name,
SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(t1.endtime,t1.endtime)))/COUNT(t1.endtime)) AS `avg`,
MAX(TIMEDIFF(t1.endtime,t1.starttime)) AS `max`,
MIN(TIMEDIFF(t1.endtime,t1.starttime)) AS `min`,
CONCAT(
IF(t1.starttime>=(NOW() - INTERVAL 15 MINUTE), '15', ''),
IF(t1.starttime>=(NOW() - INTERVAL 30 MINUTE), '30', ''),
IF(t1.starttime>=(NOW() - INTERVAL 1 HOUR), 'H', ''),
IF(t1.starttime>=(NOW() - INTERVAL 1 DAY), 'D', ''),
IF(t1.starttime>=DATE_FORMAT(SUBDATE(NOW(), INTERVAL WEEKDAY(NOW()) DAY), '%Y-%m-%d'), 'W', ''),
IF(t1.starttime>=CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') AS DATE), 'M', '')
) AS period,
t1.starttime
FROM table1 t1
LEFT OUTER JOIN `user` u ON u.id = t1.user_id
WHERE t1.starttime >= CAST(DATE_FORMAT(NOW() ,'%Y-%m-01') AS DATE)
GROUP BY user_name, period
Выше приведен пример запроса. Мое намерение - получить результаты за разные сроки. то есть получить количество, мин, макс и т. д. за последние 15 минут, 1 час, 1 день, 1 неделю, 1 месяц и т. д.
Итак, я хочу, чтобы результат был таким:
+--------------+--------------+-----------------+--------------+-----------------+
| period | count | user | min | max |
+--------------+--------------+-----------------+--------------+-----------------+
| 15mins | 12 | test_user1 | 00:00:45 | 00:01:45 |
| 15mins | 12 | test_user2 | 00:00:45 | 00:01:45 |
| 15mins | 12 | test_user3 | 00:00:45 | 00:01:45 |
| 15mins | 12 | test_user4 | 00:00:45 | 00:01:45 |
| 15mins | 12 | test_user5 | 00:00:45 | 00:01:45 |
| 30mins | 15 | test_user1 | 00:01:45 | 00:11:45 |
| 30mins | 15 | test_user2 | 00:01:45 | 00:11:45 |
| 30mins | 16 | test_user3 | 00:04:45 | 00:11:45 |
| 30mins | 18 | test_user4 | 00:09:45 | 00:11:45 |
| 30mins | 19 | test_user10 | 00:07:45 | 00:11:45 |
| 30mins | 14 | test_user11 | 00:04:45 | 00:11:45 |
| 30mins | 15 | test_user12 | 00:00:45 | 00:11:45 |
| 1day | 100 | test_user1 | 01:00:45 | 01:11:45 |
+--------------+--------------+-----------------+--------------+-----------------+
t1.starttime - дата и время. И мы получаем результаты на основе текущего времени сервера.