MAX-проблемы с запросами - PullRequest
1 голос
/ 30 марта 2019

Я работаю над заданием, и у меня есть таблица с несколькими столбцами. Меня интересуют два столбца Type и Easting.

Я пытаюсь использовать запрос, чтобы вернуть максимальное значение из столбца Easting, а также показать, что это значение содержит в столбце Type.

Я использую Microsoft Access для назначения.

Вот то, что у меня пока есть, но он возвращает все значения, а не максимум

SELECT Type, Location,MAX(Easting)
FROM CrimeData
GROUP BY Easting, Location, Type

Любая помощь будет отличной.

Ответы [ 3 ]

2 голосов
/ 30 марта 2019

Вам необходимо получить максимальное значение Easting (с использованием подзапроса), а затем выбрать все записи, содержащие такое значение, например:

select c.type, c.location, c.easting
from crimedata c
where c.easting = (select max(t.easting) from crimedata t)

Решения, в которых используется предложение group byпредоставит только максимальное значение Easting для записей в каждой комбинации значений, содержащихся в полях в предложении group by.

0 голосов
/ 30 марта 2019

Попробуйте это:

SELECT Type, Location, MAX(Easting)
FROM CrimeData
GROUP BY Location, Type
HAVING Easting = MAX(Easting)

или проще:

SELECT Type, Location, Easting
FROM CrimeData
where Easting = (select max(Easting) from CrimeData)

Столбец, который вы используете в функции (в вашем случае MAX), не должен быть частью оператора group by. Надеюсь, это прояснит, иначе я могу объяснить больше;)

0 голосов
/ 30 марта 2019

Вы должны сгруппировать по всем выходным столбцам, за исключением столбца с агрегатом (MAX).

SELECT Type, Location, MAX(Easting)
FROM CrimeData
GROUP BY Type, Location

При группировании вы можете отфильтровать необработанные данные перед группировкой с помощью предложения WHERE и сгруппированных данных.после группировки с оговоркой.например,

SELECT Type, Location, MAX(Easting)
FROM CrimeData
WHERE Type > 1
GROUP BY Type, Location
HAVING MAX(Easting) < 10
...