#mysql #lag #partition
#mysql #задержка #раздел
Вопрос:
Я пытаюсь создать набор данных MySQL, в котором есть записи из предыдущего исследования (хирургическое исследование с первым исследованием, имеющим значение 1), а также для этого идентификатора пользователя. У каждого пользователя может быть несколько исследований. Я пытаюсь использовать функцию задержки для получения предыдущих данных исследования. Я получаю повторяющиеся значения для исследования 1 при попытке использовать функцию задержки.
WITH Complete_Data AS (
SELECT *
FROM Data
GROUP BY UserId, studyno
)
SELECT *, LAG(indication_of_failure, 1)
OVER (
PARTITION BY UserId
ORDER BY studyno
) prev_study_indication_of_failure
,
LAG(BCVA_State,1)
OVER (
PARTITION BY UserId
ORDER BY studyno
) prev_study_BCVA
FROM
Complete_Data
GROUP BY UserId, studyno
;
Я ожидаю нулей в prev_study_indication_of_failure и prev_study_BCVA, когда studyno = 1, но заполняется значениями, когда studyno>= 2.
Из-за повторяющихся записей для studyno = 1 я получаю значения в prev_study_indication_of_failure и prev_study_BCVA
Пример данных
Комментарии:
1. Почему у вас есть
GROUP BY
в ваших запросах? Вы не выполняете никакой агрегации.2. Я добавил группу, думая, что это решит мою проблему, но, несмотря на это, результат остался прежним
3. Не могли бы вы предоставить некоторые образцы данных и ожидать результата?
4. Я добавил примерные данные и ожидаемый результат к приведенному выше вопросу