2015-04-10 2 views
2

Это мой запрос:Как использовать функцию MAX в SQL?

SELECT Cottage15.CNUM,Cottage15.Rent,Assignment15.Hours 
FROM Cottage15 
INNER JOIN Assignment15 
ON Cottage15.CNUM=Assignment15.CNUM 
ORDER BY Assignment15.AID; 

Это работает, но я не могу понять, как применить функцию Max к hours? Я надеялся, что MAX(Assignment15.Hours) будет работать !?

Этот запрос показывает все строки, но я хочу, чтобы он показывал мне определенные строки, которые имеют наибольшее число, основанное на поле часа.

+2

Вы должны использовать 'GROUP BY' вместе с ним. – Barmar

+1

MAX - это совокупная функция, вам нужно будет создавать группы для агрегирования. – flup

ответ

0

, если вы хотите получить max(hour) за каждый Cottage15.CNUM and Cottage15.Rent затем использовать max(Assignment15.Hours) и group by Cottage15.CNUM,Cottage15.Rent:

SELECT Cottage15.CNUM,Cottage15.Rent,MAX(Assignment15.Hours) 
FROM Cottage15 
INNER JOIN Assignment15 
ON Cottage15.CNUM=Assignment15.CNUM 
GROUP BY Cottage15.CNUM,Cottage15.Rent 

Но если вы хотите получить Cottage15.CNUM and Cottage15.Rent, которые имеют max(Assignment15.Hours) во всем наборе результатов, то вы можете получить его:

SELECT Cottage15.CNUM,Cottage15.Rent,Assignment15.Hours 
FROM Cottage15 
INNER JOIN Assignment15 
ON Cottage15.CNUM=Assignment15.CNUM 
WHERE Assignment15.Hours = (SELECT MAX(Assignment15.Hours) 
          FROM Cottage15 
          INNER JOIN Assignment15 
          ON Cottage15.CNUM=Assignment15.CNUM 
          ) 
+0

Это кажется немного более понятным, но оно не выполнялось, когда я его запускал: * ( – rkail

+0

почему он не выполнялся !! ?? дать правильная обратная связь, что вы подразумеваете под _didn't execute_? она дает ошибку или не дает ожидаемого результата? – jfun

+0

вы просто пропустили точку с запятой в конце запроса ';' – jfun

1

Я думаю, что это то, что вы хотите

SELECT Cottage15.CNUM,Cottage15.Rent,Assignment15.Hours 
FROM Cottage15 
INNER JOIN Assignment15 
ON Cottage15.CNUM=Assignment15.CNUM 
WHERE Assignment15.Hours = (SELECT MAX(Assignment15.Hours) FROM Assignment15) 
ORDER BY Assignment15.Hours 
+0

Он все еще показывает все записи данных (строки), когда я запускал это, мне нужно, чтобы он показывал только запись с наибольшим числом в поле часов. – rkail

+0

Как насчет этого? Извините, трудно сказать, не знаю, что означает ваши данные. Если бы вы могли сказать мне, что вы хотели, это действительно помогло бы вам помочь – Stephan

+0

Этот запрос ничего не сделал. Он не загружал записи. Когда я запускаю запрос, он показывает мне все 15 записей в базе данных. Они сортируются. Это выглядит великолепно, однако я только wana показываю записи, которые имеют число 5. 5 - максимальное значение в моей базе данных, поэтому я хочу показать ограниченные записи. Это не делает это – rkail

1

вы должны добавить агрегацию группы применять Max функцию

SELECT Cottage15.CNUM,Cottage15.Rent,Max(Assignment15.Hours) 
FROM Cottage15 
INNER JOIN Assignment15 
ON Cottage15.CNUM=Assignment15.CNUM 
group by Cottage15.CNUM,Cottage15.Rent 
ORDER BY Assignment15.AID; 
Смежные вопросы