SQL Отчет по затраченному времени с разбивкой по дням

Возможно ли вообще такое реализовать?

Имеются 4 таблицы в БД MySQL

Users Elapsed_time Tasks Grops
id id id id
Name date title title
user_id grop_id
task_id
minutes

в конце хочется получить отчет в виде таблицы с разбивкой по дням

GROUPS USERS TASKS 01 jan 02 jan 03 jan 01 feb 02 feb 03 feb
group 1 user 1 task 1 10 20 30 10
group 1 user 1 task 22 40 50 10
group 1 user 22 task 1 20 20
group 1 user 22 task 333 30 30
group 1 user 333 task 22 40
group 2 user 333 task 333 20 20 10
group 2 user 333 task 4444 30 30
group 2 user 4444 task 1 40
group 2 user 4444 task 333 20 20
group 2 user 55555 task 22 30 30
group 2 user 55555 task 4444 40
group 2 user 55555 task 55555 10 10 10 10 10 10

На данный момент смог построить такой запрос

SELECT 
    b_tasks_elapsed_time.ID, 
    b_user.NAME, 
    b_tasks.TITLE, 
    EXTRACT(YEAR FROM b_tasks_elapsed_time.CREATED_DATE) AS year, 
    EXTRACT(MONTH FROM b_tasks_elapsed_time.CREATED_DATE) AS month, 
    ROUND(NULLIF(SUM(CASE WHEN EXTRACT(DAY FROM b_tasks_elapsed_time.CREATED_DATE) = 1 THEN b_tasks_elapsed_time.MINUTES ELSE 0 END)/60, 0), 2) AS day_01,
    ROUND(NULLIF(SUM(CASE WHEN EXTRACT(DAY FROM b_tasks_elapsed_time.CREATED_DATE) = 2 THEN b_tasks_elapsed_time.MINUTES ELSE 0 END)/60, 0), 2) AS day_02,
...    
    ROUND(NULLIF(SUM(CASE WHEN EXTRACT(DAY FROM b_tasks_elapsed_time.CREATED_DATE) = 30 THEN b_tasks_elapsed_time.MINUTES ELSE 0 END)/60, 0), 2) AS day_30,
    ROUND(NULLIF(SUM(CASE WHEN EXTRACT(DAY FROM b_tasks_elapsed_time.CREATED_DATE) = 31 THEN b_tasks_elapsed_time.MINUTES ELSE 0 END)/60, 0), 2) AS day_31
FROM b_tasks_elapsed_time
INNER JOIN b_user ON b_tasks_elapsed_time.USER_ID = b_user.ID
INNER JOIN b_tasks ON b_tasks_elapsed_time.TASK_ID = b_tasks.ID
WHERE EXTRACT(YEAR FROM b_tasks_elapsed_time.CREATED_DATE) = 2023 AND EXTRACT(MONTH FROM b_tasks_elapsed_time.CREATED_DATE) = 11 AND b_user.ID LIKE '251'
GROUP BY b_tasks_elapsed_time.ID

Может поможете sql-запросом, ссылка или путь в каком направлении двигаться, что бы решить задачу. Любая помощь приветствуется.


Ответы (0 шт):