Выберите самую последнюю запись в GROUP BY - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь выбрать самое последнее значение для RESULT во время группы, но не могу понять, как я могу это сделать успешно.

Вот данные таблицы для quiz_result: enter image description here

Вот мой текущий SQL оператор и результат:

SELECT quiz_result.ID_EVALUATION,
       quiz_result.ID_QUIZ_QUESTION,
       quiz_result.ID_USER,
       quiz_result.RESULT as RECENT_RESULT,
       max(CREATED_DATE)  as RECENT_ATTEMPT_DATE,
       "-----"  as NEXT_REPITITION,
       COUNT(quiz_result.RESULT) as TOTAL,
       sum(case when quiz_result.RESULT = 'false' then 1 else 0 end) AS FAILED_ATTEMPTS,
       sum(case when quiz_result.RESULT = 'true' then 1 else 0 end) AS SUCESS_ATTEMPTS
FROM p2.quiz_result
GROUP BY ID_USER,ID_QUIZ_QUESTION
ORDER BY CREATED_DATE DESC;

enter image description here

Я думал, что ORDER BY CREATED_DATE отсортирует результат перед группой, но это не так.

Если вы сравните RESULT из первого изображения со столбцом RECENT_RESULT на втором изображении ясно, что RECENT_RESULT должно было быть ' false ', если все работало так, как задумано.

Кажется, я не могу понять, как я могу это сделать это, так что некоторая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 12 мая 2020

Я переработал запрос и добавил подзапрос для получения информации.

SELECT QR1.ID_EVALUATION,
   QR1.ID_QUIZ_QUESTION,
   QR1.ID_USER,
   (SELECT QR2.RESULT FROM quiz_result QR2 WHERE QR1.ID_QUIZ_QUESTION = QR2.ID_QUIZ_QUESTION AND QR1.ID_USER = QR2.ID_USER ORDER BY QR2.CREATED_DATE DESC limit 1 ) as RECENT_RESULT,
   max(QR1.CREATED_DATE)  as RECENT_ATTEMPT_DATE,
   "-----"  as NEXT_REPITITION,
   COUNT(QR1.RESULT) as TOTAL,
   sum(case when QR1.RESULT = 'false' then 1 else 0 end) AS FAILED_ATTEMPTS,
   sum(case when QR1.RESULT = 'true' then 1 else 0 end) AS SUCESS_ATTEMPTS
FROM p2.quiz_result QR1 
GROUP BY QR1.ID_USER,QR1.ID_QUIZ_QUESTION
0 голосов
/ 07 мая 2020
ORDER BY <your sorting column> DESC;

Порядок по применяется после группы по.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...