Top.Mail.Ru
Ответы

БД SQL Нужна помощь

Нужна помощь
Задание
Автор - Лариса Фернандес

Найти вопрос, с самой большой успешностью выполнения - "самый легкий" и вопрос, с самой маленькой успешностью выполнения - "самый сложный". (Подробно про успешность на этом шаге). Вывести предмет, эти два вопроса и указание - самый сложный или самый легкий это вопрос. Сначала вывести самый легкий запроса, потом самый сложный.

Фрагмент логической схемы базы данных

Результат:

+--------------+-------------------------------------------------------------------------+---------------+
| name_subject | name_question | Сложность |
+--------------+-------------------------------------------------------------------------+---------------+
| Основы SQL | Условие, по которому отбираются записи, задается после ключевого слова: | самый легкий |
| Основы SQL | Для внутреннего соединения таблиц используется оператор: | самый сложный |
+--------------+-------------------------------------------------------------------------+---------------+
Текст задания (чтобы не прокручивать страницу) :

Найти вопрос, на который было дано максимальное количество правильных ответов - "самый легкий" и вопрос, на который было дано минимальное количество правильных ответов - "самый сложный". Вывести предмет, эти два вопроса и указание - самый сложный или самый легкий это вопрос. Сначала вывести самый легкий запроса, потом самый сложный.

Введите SQL запрос

По дате
По рейтингу
Аватар пользователя
Мыслитель
9мес
123456789101112131415161718192021222324252627
 WITH Question_max AS 
    (SELECT  name_subject, 
             name_question, 
             ROUND(SUM(is_correct) /  COUNT(testing.answer_id) * 100, 2) AS Сложность 
             FROM subject 
             JOIN question ON subject.subject_id = question.subject_id 
             JOIN testing ON question.question_id = testing.question_id 
             LEFT JOIN answer ON testing.answer_id = answer.answer_id 
             GROUP BY name_subject, name_question 
             ORDER BY 1, 3 DESC, 2 
      LIMIT 1), 
      Question_min AS 
    (SELECT  name_subject, 
             name_question, 
             ROUND(SUM(is_correct) /  COUNT(testing.answer_id) * 100, 2) AS Сложность 
             FROM subject 
             JOIN question ON subject.subject_id = question.subject_id 
             JOIN testing ON question.question_id = testing.question_id 
             LEFT JOIN answer ON testing.answer_id = answer.answer_id 
             GROUP BY name_subject, name_question 
             ORDER BY 1, 3, 2 
     LIMIT 1) 
 
 
SELECT name_subject, name_question, 'самый легкий' AS Сложность FROM Question_max 
UNION 
SELECT name_subject, name_question, 'самый сложный' AS Сложность  FROM Question_min;