MAX查询问题

时间:2019-03-30 16:16:50

标签: sql ms-access max

我正在做作业,并且我有一个有几列的表格。我感兴趣的两个是TypeEasting列。

我正在尝试使用查询从Easting列中返回最大值,并向我展示该值在Type列中的含义。

我正在使用Microsoft Access进行作业。

这是我到目前为止的内容,但是它返回所有值,而不是最大值

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

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:2)

您需要获取最大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 :(得分:0)

您必须对所有输出列进行分组,但汇总列(MAX)除外。

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

分组时,可以在使用WHERE子句进行分组之前过滤原始数据,而在使用Haven子句进行分组之后可以过滤分组的数据。例如

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

答案 2 :(得分:-1)

尝试一下:

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语句。 希望这可以清除它,否则我可以解释更多;)