Получение двух самых высоких значений из одного столбца для ранжированного сравнения различий - PullRequest
0 голосов
/ 09 ноября 2011

ИЗМЕНЕНО, ЧТОБЫ ДОБАВИТЬ ИНФОРМАЦИЮ:

Я понимаю, что было много вопросов "получи два наивысших" или "получи второй наивысший" по SQL и ответы на них отправлены, поэтому я заранее извиняюсь, если этот вопрос излишнийно я хочу сделать что-то немного отличное от других ситуаций, и мне нужна помощь, чтобы добраться от А до Б. В лучшем случае я - любитель MySQL, поэтому я уверен, что ответ очевиден для некоторых из вас.

У меня есть куча рядов статистики за один сезон бейсболиста.Я хочу сравнить их сезон с самым высоким значением с их сезоном со вторым самым высоким значением.Я также хочу иметь возможность сравнивать два сезона, вычитая второй по величине из самого высокого.

Конечно, я могу легко получить самое высокое значение, используя MAX, но для новичка это намного сложнеекак я.


Спасибо за вашу помощь.

Я упросту соответствующую структуру таблицы, чтобы она соответствовала:

playerid, Year, Value

Каждый сезон игрока разделен на год.

То, что я хочу получить из моего запроса

Player id, 
Year [of Highest Value], 
Value [Highest], 
Year [of Second Highest Value], 
Value [Second-Highest]

Надеюсь, это достаточно просто и понятно.Спасибо за любую помощь.

1 Ответ

3 голосов
/ 09 ноября 2011

Не зная структуру вашей таблицы, вы, по сути, могли бы сделать:

SELECT score
FROM statstable
WHERE playerID=???
ORDER BY score DESC
LIMIT 2

, который извлечет две строки с наивысшими оценками, которые вы можете вывести из оценки и вычесть в своем клиенте.

Если вам нужно это самое высокое значение next_highest для пользователя в другом запросе, тогда оно становится немного сложнее.

...