Предположим, у нас есть таблица со схемойУдаление избыточности в SQL запрос, который содержит подзапрос
student(id (primary key), name, math_score, english_score)
Я пытаюсь получить информацию о студенте (ID и имя) с самого высокого ранга (по заказу самой высокой суммой математике баллов и английский Гол). Там может быть несколько учеников с галстуком, и мы хотим всех. То, как я думал об этом, - это использовать подзапрос, чтобы получить таблицу с суммой баллов, а затем найти идентификаторы, имена которых имеют наибольшую сумму.
SELECT s.id, s.name
FROM (SELECT s.id, s.name, s.math_score+s.english_score as sum
FROM student s) s
WHERE s.sum = (SELECT max(s.sum)
FROM (SELECT s.id, s.name, s.math_score+s.english_score as sum
FROM student s) s)
Это работает, но кажется очень избыточным и неэффективным.
Я только начал изучать язык sql, и я был бы признателен за понимание этой проблемы!
Упс ... исправлено с лучшим ответом. –
Он хочет, чтобы учащиеся с лучшим счетом, включая галстуки ... он работает, попробуйте пример самостоятельно. –
[Конечно же] (http://sqlfiddle.com/#!6/967e1/1) он работает. – paqogomez