Возврат Microsoft SQL Server MAX - PullRequest
       9

Возврат Microsoft SQL Server MAX

0 голосов
/ 24 октября 2019

Я пытаюсь вернуть first_name, last_name и рост самой высокой женщины (ей) в таблице.

SELECT height, gender
FROM students
WHERE gender = 'F'
ORDER BY height ASC

Я сделал это, чтобы узнать, какой был самый высокий женский рост, которыйэто (197) для двух женщин. Я пытался заставить SQL показать ТОЛЬКО двух женщин в 197 году с их first_name, last_name и height, но у меня есть только код для возврата значения 197 с 1 строкой. Это должно быть 2 строки, затронутые first_name, last_name и высотой двух старших женщин. Как я могу исправить свой код?

SELECT MAX(height)
FROM  students
WHERE gender = 'F'
GROUP BY patient_height, first_name, last_name, gender
ORDER BY patient_height DESC

Это возвращает значения НЕ МАКС. (Высота) и МАКС. (Высота), что я могу сделать, чтобы исправить эту ошибку?

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

К сожалению, MySQL не поддерживает синтаксис WITH TIES, такой как SQL Server.

Одним из решений является использование коррелированного подзапроса, как продемонстрировал Гордон Линофф. В MysQL 8.0 вы также можете использовать оконную функцию RANK():

select *
from (
    select 
        s.*,
        rank() over(order by patient_height desc) rn
    from students s
    where gender = 'F'
) x
where rn = 1
0 голосов
/ 24 октября 2019

Один из методов заключается в использовании подзапроса:

select s.*
from students s
where s.gender = 'F' and
      s.height = (select max(s2.height)
                  from students s2
                  where s2.gender = 'F'
                 );
...