у меня есть вот такой запрос, и в нём формируются столбцы с тестами справа
помоги мне выделить условие для добавления таких столбцов самостоятельно, чтобы я мог в будущем добавить ещё тесты справа:
-- Общие табличные выражения (CTE) для получения последней и лучшей попыток для каждого assessment_id

-- CTE для последней попытки и балла для Agro05 (assessment_id = 6938674495978284394)
WITH LatestAttemptsAgro05 AS (
    SELECT 
        tl.person_id,
        FORMAT(tl.last_usage_date, 'dd.MM.yyyy') AS Последняя_попытка_Agro05,
        tl.score AS Балл_последний_Agro05,
        -- Используем оконную функцию для определения самой последней попытки по дате
        ROW_NUMBER() OVER (PARTITION BY tl.person_id ORDER BY tl.last_usage_date DESC) AS rn
    FROM 
        test_learnings tl
    WHERE 
        tl.assessment_id = 6938674495978284394
),

-- CTE для лучшей попытки и максимального балла для Agro05
BestAttemptsAgro05 AS (
    SELECT 
        tl.person_id,
        FORMAT(tl.last_usage_date, 'dd.MM.yyyy') AS Лучшая_попытка_Agro05,
        tl.score AS Балл_максимальный_Agro05,
        -- Используем оконную функцию для определения попытки с наибольшим баллом
        ROW_NUMBER() OVER (PARTITION BY tl.person_id ORDER BY tl.score DESC, tl.last_usage_date DESC) AS rn
    FROM 
        test_learnings tl
    WHERE 
        tl.assessment_id = 6938674495978284394
),

-- Аналогичное CTE для Agro09 (assessment_id = 6976921511949200434)
LatestAttemptsAgro09 AS (
    SELECT 
        tl.person_id,
        FORMAT(tl.last_usage_date, 'dd.MM.yyyy') AS Последняя_попытка_Agro09,
        tl.score AS Балл_последний_Agro09,
        ROW_NUMBER() OVER (PARTITION BY tl.person_id ORDER BY tl.last_usage_date DESC) AS rn
    FROM 
        test_learnings tl
    WHERE 
        tl.assessment_id = 6976921511949200434
),

BestAttemptsAgro09 AS (
    SELECT 
        tl.person_id,
        FORMAT(tl.last_usage_date, 'dd.MM.yyyy') AS Лучшая_попытка_Agro09,
        tl.score AS Балл_максимальный_Agro09,
        ROW_NUMBER() OVER (PARTITION BY tl.person_id ORDER BY tl.score DESC, tl.last_usage_date DESC) AS rn
    FROM 
        test_learnings tl
    WHERE 
        tl.assessment_id = 6976921511949200434
),

-- Аналогичное CTE для Agro15 (assessment_id = 7070791407121472810)
LatestAttemptsAgro15 AS (
    SELECT 
        tl.person_id,
        FORMAT(tl.last_usage_date, 'dd.MM.yyyy') AS Последняя_попытка_Agro15,
        tl.score AS Балл_последний_Agro15,
        ROW_NUMBER() OVER (PARTITION BY tl.person_id ORDER BY tl.last_usage_date DESC) AS rn
    FROM 
        test_learnings tl
    WHERE 
        tl.assessment_id = 7070791407121472810
),

BestAttemptsAgro15 AS (
    SELECT 
        tl.person_id,
        FORMAT(tl.last_usage_date, 'dd.MM.yyyy') AS Лучшая_попытка_Agro15,
        tl.score AS Балл_максимальный_Agro15,
        ROW_NUMBER() OVER (PARTITION BY tl.person_id ORDER BY tl.score DESC, tl.last_usage_date DESC) AS rn
    FROM 
        test_learnings tl
    WHERE 
        tl.assessment_id = 7070791407121472810
)

-- Основной запрос для извлечения данных
SELECT 
    gc.name AS Группа,  -- Название группы из group_collaborators
    c.fullname AS ФИО,  -- Полное имя сотрудника из collaborators
    c.code AS Табельный,  -- Технический код сотрудника
    r.name AS Регион,  -- Наименование региона
    s.name AS Подразделение,  -- Наименование подразделения
    ps.name AS Родительское_подразделение,  -- Родительское подразделение
    c.position_name AS Должность,  -- Должность сотрудника
    FORMAT(c.hire_date, 'dd.MM.yyyy') AS Дата_приёма,  -- Дата приёма на работу
    CASE c.sex WHEN 'm' THEN 'М' ELSE 'Ж' END AS Пол,  -- Пол сотрудника
    FORMAT(c.birth_date, 'dd.MM.yyyy') AS Дата_рождения,  -- Дата рождения
    FORMAT(c.dismiss_date, 'dd.MM.yyyy') AS Дата_увольнения,  -- Дата увольнения
    c.current_state AS Текущее_состояние,  -- Текущее состояние сотрудника
    -- Данные для последней и лучшей попыток с Agro05
    la05.Последняя_попытка_Agro05,
    la05.Балл_последний_Agro05,
    ba05.Лучшая_попытка_Agro05,
    ba05.Балл_максимальный_Agro05,
    -- Данные для последней и лучшей попыток с Agro09
    la09.Последняя_попытка_Agro09,
    la09.Балл_последний_Agro09,
    ba09.Лучшая_попытка_Agro09,
    ba09.Балл_максимальный_Agro09,
    -- Данные для последней и лучшей попыток с Agro15
    la15.Последняя_попытка_Agro15,
    la15.Балл_последний_Agro15,
    ba15.Лучшая_попытка_Agro15,
    ba15.Балл_максимальный_Agro15
FROM
    group_collaborators gc
JOIN
    collaborators c ON gc.collaborator_id = c.id
LEFT JOIN
    regions r ON c.region_id = r.id
LEFT JOIN
    subdivisions s ON c.position_parent_id = s.id
LEFT JOIN
    subdivisions ps ON s.parent_object_id = ps.id
-- Объединение с CTE для Agro05
LEFT JOIN
    (SELECT person_id, Последняя_попытка_Agro05, Балл_последний_Agro05 FROM LatestAttemptsAgro05 WHERE rn = 1) la05 ON c.id = la05.person_id
LEFT JOIN
    (SELECT person_id, Лучшая_попытка_Agro05, Балл_максимальный_Agro05 FROM BestAttemptsAgro05 WHERE rn = 1) ba05 ON c.id = ba05.person_id
-- Объединение с CTE для Agro09
LEFT JOIN
    (SELECT person_id, Последняя_попытка_Agro09, Балл_последний_Agro09 FROM LatestAttemptsAgro09 WHERE rn = 1) la09 ON c.id = la09.person_id
LEFT JOIN
    (SELECT person_id, Лучшая_попытка_Agro09, Балл_максимальный_Agro09 FROM BestAttemptsAgro09 WHERE rn = 1) ba09 ON c.id = ba09.person_id
-- Объединение с CTE для Agro15
LEFT JOIN
    (SELECT person_id, Последняя_попытка_Agro15, Балл_последний_Agro15 FROM LatestAttemptsAgro15 WHERE rn = 1) la15 ON c.id = la15.person_id
LEFT JOIN
    (SELECT person_id, Лучшая_попытка_Agro15, Балл_максимальный_Agro15 FROM BestAttemptsAgro15 WHERE rn = 1) ba15 ON c.id = ba15.person_id

-- Фильтр по конкретной группе
WHERE
    gc.group_id = 6961385114832565894;