#mysql
Вопрос:
Необходимо агрегировать время, затраченное на выполнение задачи по неделям, по персонажу (идентификатору). диапазоны activity_date будут меняться в зависимости от желаемого набора данных. У меня есть это:
SELECT id, week(activity_date, 0) WeekNumber, adddate(activity_date, INTERVAL 1-DAYOFWEEK(activity_date) DAY) WeekStart, adddate(activity_date, INTERVAL 7-DAYOFWEEK(activity_date) DAY) WeekEnd, SUM(min_spent) AS Minutes FROM time_spent where activity_date between '2021-09-01' and '2021-11-10' GROUP BY week(activity_date, 0), id ORDER BY id, week(activity_date)
Это работает для агрегирования по неделям, но я хотел бы показать начало недели в виде заголовков столбцов на перекрестной вкладке. Даты будут постоянно меняться, поэтому конкретное определение дат для столбцов или сравнения (ЕСЛИ/СЛУЧАЙ) не является вариантом.
id, minutes_week_mm/dd/yyyy, minutes_week_mm/dd/yyyy, etc... user1, 105, 205 user2, 200, 50 user3, 25, 105
Любая помощь будет признательна.
Комментарии:
1. Если вы установили пользовательский день в качестве начала недели, просто сгруппируйте по
DATEDIFF(table.date, @first_date) DIV 7
.2. Не найдя большой помощи для этого в стеке, для MySQL