SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.02.2021 16:57:21

Кеша
Участник
Зарегистрирован: 22.02.2021
Сообщений: 1

LEAD() в запросе

Добрый день. Не судите строго, я чайник в данном деле еще, могу задавать глупые вопросы.
Проблема такая.
Есть задача, в которой нужно сделать три группы студентов. В одной из них должны быть отобраны те студенты, которые сначала ответили "верно", а потом по этому же шагу "неверно". То есть, (result, LEAD(result)...) = ('correct', 'wrong').  Говорят, что его нужно прописать в условии, но так не принимает.
WITH one1 (stud, step1)
AS(SELECT student_name, count(step_id)
FROM student JOIN step_student USING(student_id)
WHERE(result, LEAD(result)) = ('correct', 'wrong'))

Хочу прописать тогда как одно из полей, как оконную, но не знаю как реализовать и будет ли это условие вообще учитываться.

Спасибо.

Неактивен

 

#2 23.02.2021 18:36:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5738

Re: LEAD() в запросе

приведите пример тестовых данных на десяток строк (в виде create table.. и insert into..) и какой должен быть результат на этих данных

Неактивен

 

#3 23.02.2021 18:47:09

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5738

Re: LEAD() в запросе

1. Обратите внимание, оконная функция должна содержать часть OVER, которая указывает, как разбить строки запроса на группы для обработки оконной функцией.

2. WITH one1 (stud, step1)
AS(SELECT student_name, count(step_id)
FROM student JOIN step_student USING(student_id)
WHERE(result, LEAD(result)) = ('correct', 'wrong'))
должен указываться с последующим оператором, например, SELECT

3. и укажите вашу версию MySQL

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson