Выбор максимальной суммы двух столбцов

У меня есть таблицы сравнения. Если я убегу

SELECT comparisonID,stu1Vers,stu2Vers,stu1,stu2 from comparisons WHERE stu1!=stu2 and assignmentid=9; 

Я получаю что-то вроде:

 +--------------+----------+----------+------+------+ | comparisonID | stu1Vers | stu2Vers | stu1 | stu2 | +--------------+----------+----------+------+------+ | 287 | 12 | 2 | 1 | 6 | | 286 | 12 | 1 | 1 | 6 | | 276 | 11 | 2 | 1 | 6 | | 275 | 11 | 1 | 1 | 6 | | 266 | 10 | 2 | 1 | 6 | | 265 | 10 | 1 | 1 | 6 | | 257 | 9 | 2 | 1 | 6 | | 256 | 9 | 1 | 1 | 6 | ... | 391 | 19 | 1 | 1 | 6 | | 392 | 19 | 2 | 1 | 6 | +--------------+----------+----------+------+------+ 

Я бы хотел выбрать всю строку, где stu1Vers + stu2Vers является максимальным. Я продолжаю пробовать что-то вроде

 select c.comparisonid,c.stu1vers,c.stu2vers,max(totvers) from comparisons as c join (select comparisonid, stu1vers+stu2vers as totvers from comparisons where stu1!=stu2 group by comparisonid) as cm on c.comparisonid = cm.comparisonid and c.stu1vers+c.stu2vers = cm.totvers; 

но это возвращает довольно случайный ассортимент вещей:

 +--------------+----------+----------+--------------+ | comparisonid | stu1vers | stu2vers | max(totvers) | +--------------+----------+----------+--------------+ | 220 | 1 | 1 | 21 | +--------------+----------+----------+--------------+ 

Я пытаюсь получить строку 392 в первой таблице.

Если вы хотите, чтобы все строки имели несколько строк с одинаковым максимальным значением, вы можете использовать этот запрос:

 SELECT * FROM Table1 WHERE stu1Vers + stu2Vers = (SELECT MAX(stu1Vers + stu2Vers) FROM Table1) 

Включая ваше состояние:

 SELECT * FROM Table1 WHERE stu1Vers + stu2Vers = ( SELECT MAX(stu1Vers + stu2Vers) FROM Table1 WHERE stu1!=stu2 and assignmentid=9 ) AND stu1!=stu2 and assignmentid=9 

Результат:

 392, 19, 2, 1, 6 

Что касается вашего обновления вопроса, я не уверен, что вы хотите вернуть все строки, сгруппированные по stu1 и stu2. Возможно, вы имеете в виду упорядоченные эти столбцы? Если это так, добавьте ORDER BY stu1, stu2 в запрос.

Как насчет чего-то вроде:

 SELECT TOP 1 comparisonid, stu1vers, stu2vers, stu1Vers + stu2Vers AS MaxValue FROM comparisons ORDER BY MaxValue DESC 

Вы пробовали что-то вроде этого?

  SELECT comparisonID,stu1Vers,stu2Vers,stu1,stu2, max(stu1Vers + stu2Vers) as maximum from comparisons WHERE stu1!=stu2 and assignmentid=9 order by maximum desc limit 1;