2

我正在尝试查找日期时间行的最大计数。

也就是说,我试图在 DATETIME 信息列中显示最常出现的月份的名称。

这是我的代码:

Select MONTHNAME(a.AF_Zeit) as Monat
From abflug a
group by MONTH(a.AF_Zeit)
having count(AF_Zeit) = (select max(count(MONTH(AF_Zeit)))
                from abflug
                group by MONTH(AF_Zeit))

mySQL 返回消息:“#1111 - 组函数的使用无效”

我不明白!我听说那里还有其他可能得到这个,但我有点不得不用子选择来做。我非常感谢任何帮助。

4

1 回答 1

1

我假设您正在尝试在 ABFLUG 表的 AF_ZEIT 列中显示最频繁出现的月份的名称。

你怎么做到这一点?让我们从概念上解决它。

首先,您需要一个显示 ABFLUG 表每一行的月份名称的虚拟表(如您所说的子选择)。

SELECT MONTHNAME(a.AF_Zeit) as Monat
  FROM ABFLUG A

然后您需要计算这些项目(或者,您可以说,按月获取直方图)。这将做到这一点。这是一个较小的虚拟表。

SELECT COUNT(*) NNN, MONTHNAME(a.AF_Zeit) as Monat
  FROM ABFLUG A
 GROUP BY MONTHNAME(a.AF_Zeit) 

然后,您需要操作该表的行以降序排列它们,并显示第一个(最频繁的)行。

SELECT Z.Monat FROM (
  SELECT COUNT(*) NNN, MONTHNAME(a.AF_Zeit) as Monat
    FROM ABFLUG A
   GROUP BY MONTHNAME(a.AF_Zeit) 
  )Z
  ORDER BY Z.NNN
  LIMIT 1

请注意,这其中的难点在于用虚拟表的说法实现概念上的清晰性。

于 2012-06-10T23:37:17.583 回答