Как выбрать некоторые столбцы из строки с двумя условиями?

#mysql

#mysql

Вопрос:

Я пытаюсь отобразить строку из таблицы, в которой два условия: 1) Учащийся с самым высоким средним баллом 2) Дата подачи заявки до ГГГГ-ММ-ДД.

Причина, по которой я не использовал * для выбора, заключается в том, что есть некоторые столбцы, которые я не хочу отображать.

 SELECT firstName
    ,lastName
    ,applicationDate
    ,gpa
FROM Student
WHERE MAX(gpa) 
AND applicationDate < 'YYYY-MM-DD');
 

У меня возникли проблемы с написанием моего заявления об условиях.

когда я набираю код, подобный этому:

 SELECT firstName
    ,lastName
    ,applicationDate
    ,MAX(gpa)
FROM Student
WHERE applicationDate < 'YYYY-MM-DD');
 

Он будет отображать данные из разных строк.

Комментарии:

1. Упорядочите свою таблицу по gpa и ограничьтесь 1 результатом.

Ответ №1:

Я бы использовал LIMIT здесь:

 SELECT
    firstName,
    lastName,
    applicationDate,
    gpa
FROM Student
WHERE applicationDate < 'YYYY-MM-DD'
ORDER BY
    gpa DESC
LIMIT 1;
 

Это не относится к случаю, когда два или более учащихся могут быть привязаны к самому высокому среднему баллу. В этом случае мы могли бы либо использовать подзапрос в WHERE предложении, например

 WHERE gpa = (SELECT MAX(gpa) FROM Student WHERE applicationDate < 'YYYY-MM-DD')
 

Или мы могли бы использовать RANK аналитическую функцию, если вы используете MySQL 8 .

Ответ №2:

Используйте order by и limit, чтобы получить желаемый результат, например:

 SELECT firstName, lastName, applicationDate, gps WHERE applicationDate < 'YYYY-MM-DD' ORDER BY gpa DESC LIMIT 1
 

Ответ №3:

выберите max (gpa) в качестве GPA из таблицы, где date <‘2019-01-11’