如何在SQL中查找列中填充的最高实例

如何在SQL中查找列中填充的最高实例,sql,ms-access,Sql,Ms Access,因此,我有一个表(person),其中包含诸如人名、年龄、眼睛颜色、最喜欢的电影等列 我如何找到最流行的眼睛颜色,使用SQL(Microsft Access)只返回眼睛颜色(而不是计数),而不使用top,因为可能有多个颜色具有相同的计数 谢谢你在Access中,我想你需要一些关于: SELECT EyeColor FROM Person GROUP BY EyeColor HAVING COUNT(*) = ( SELECT MAX(i.EyeColorCount)

因此,我有一个表(person),其中包含诸如人名、年龄、眼睛颜色、最喜欢的电影等列

我如何找到最流行的眼睛颜色,使用SQL(Microsft Access)只返回眼睛颜色(而不是计数),而不使用top,因为可能有多个颜色具有相同的计数


谢谢你在Access中,我想你需要一些关于:

SELECT
  EyeColor
FROM
  Person
GROUP BY  
  EyeColor
HAVING
  COUNT(*) = (
    SELECT MAX(i.EyeColorCount) FROM (
      SELECT COUNT(*) AS EyeColorCount FROM Person GROUP BY EyeColor 
    ) AS i
  )
SELECT First(t.Eyecolor) AS FirstOfEyeColor
FROM (SELECT p.EyeColor, Count(p.EyeColor) AS C
FROM Person p
GROUP BY p.EyeColor
ORDER BY Count(p.EyeColor) DESC)  AS t;

我在Access中尝试了此操作,包括普通语法和SQL Server兼容语法集,它返回“无法在表达式MAX(COUNT(*)中使用聚合函数”。@Remou:我目前没有权限使用来测试此操作。您可以再次尝试更改的查询吗?谢谢!“此子查询最多可以返回一条记录”:(:)@Remou:叹气。Access不尊重
TOP 1
?再次更改了SQL。确实如此。TOP 1=2条记录,两条记录的计数相等:)现在,只是有点尴尬,“查询表达式中的语法错误(缺少运算符)选择计数(*)EyeColorCount”;)顺便说一句,在添加缺少的AS后,上面的查询返回两条记录。但是如果两种颜色的计数相同,则不会选择两种颜色,是吗?@Tomalak否,first只接受第一种颜色,与top不同。几年前,我读到一条评论,认为First不是最好的主意,从那以后我一直有点谨慎,但这只是一条评论,尽管它来自一个普遍可信的来源,我再也找不到了。第一个到目前为止还没有咬我:)嗯,如果有4个蓝眼睛和4个棕色眼睛的人,查询会返回两行吗?不会。正如我所说,我测试了重复计数,我没有达到四个眼睛颜色相同的人,只有两个蓝色和两个绿色,但如果你认为有帮助的话,我会尝试四个棕色和四个蓝色:D