2013-04-30 3 views
0

я должен сделать таблицу баскетболистов и запрос, который находит игрок с большим опытом я попыталсяВЫБРАТЬ самый опытный человек

SELECT firstName, lastName, MAX(experience) FROM Player 

, но я предполагаю, Thats неправильно.

Поэтому в основном я хочу найти игрока с высоким опытом (тип данных установлен как INT)

Спасибо !! : D

+0

возможно дубликат [Извлекает строку, которая имеет значение Max для столбца ] (http://stackoverflow.com/questions/121387/fetch-the-row-which-has-the-max-value-for-a-column) – APC

ответ

4
SELECT firstName, 
     lastName, 
     experience 
FROM Player 
WHERE experience = (SELECT MAX(experience) FROM Player) 
+2

Это может вернуть дубликаты (если есть два игрока с максимальным опытом). –

+5

@FrankSchmitt да, потому что оба они самые опытные люди. –

-2
select * from (
    select firstname, lastName, experience from player 
    order by experience desc) 
where rownum = 1 
+0

это не работает, если более 1 игроков имеют одинаковый максимальный опыт. – dmg

+0

@dmg зависит от вашего определения «не работает» - см. Мой комментарий к ответу JW. –

1
SELECT * FROM Player 
WHERE experience = 
(SELECT max(experience) FROM Player) 
0
select firstName, lastName, experience 
from Player 
where rownum = 1 
order by experience desc; 
+0

это не работает, если есть более чем один игрок с наибольшим опытом. – dmg

+0

-1, потому что этот подход вообще не работает. Вы должны сначала отсортировать, а затем взять первый ряд, а не наоборот. –

0

Правильный запрос:

Select FirstName, LastName, Experience as Experience_Player 
from Player 
where experience = (Select MAX(experience) from Player) 

Предположим, вы следующие данные:

FirstName      LastName    Experience 
Adam       Smit     15 
John       Carlos     25 
Ibrahim      Khan     10 

Когда бы вы применили аЬ ove упомянутый запрос, вы получите имя Ибрахим Хана, потому что он самый опытный игрок.

И если вы хотите получить несколько игрока, имеющего опыт работы более 10 лет, просто запустить этот запрос

Select FirstName, LastName, experience 
from Players 
where experience > 10 
1
select top 1 firstName, lastName, experience 
from Player 
order by experience desc; 
+0

, пожалуйста, улучшите форматирование, завернув скрипт в блок кода. – NeverHopeless

0
SELECT FIRSTNAME,LASTNAME,EXPERIENCE FROM (SELECT FIRSTNAME,LASTNAME,EXPERIENCE,DENSE_RANK() OVER (ORDER BY EXPERIENCE DESC) EXP FROM PLAYER) WHERE EXP=1; 

 Смежные вопросы

  • Нет связанных вопросов^_^