Проблемы с максимальными запросами

#sql #ms-access #max

#sql #ms-access #макс

Вопрос:

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

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

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

Вот что у меня есть на данный момент, но оно возвращает все значения, а не максимальное

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

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

Комментарии:

1. удалить Easting из списка групп по

Ответ №1:

Вам нужно будет получить максимальное 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 предложении.

Комментарии:

1. это идеально, очень ценится

Ответ №2:

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

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

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

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

Комментарии:

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

Ответ №3:

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

 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 .
Надеюсь, это устранит проблему, иначе я смогу объяснить больше 😉

Комментарии:

1. да, я только что пробовал это, но, возможно, я недостаточно объяснил себя в первоначальном сообщении, это дает мне максимальное значение для каждого местоположения, но я хочу включить только период МАКСИМАЛЬНОГО числа и показать местоположение и тип для этого значения, если это имеет смысл?