MySQL月日期时间最大计数

时间:2012-06-10 21:09:46

标签: mysql count

我正在尝试查找日期时间行的maxcount。

也就是说,我试图在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 - 无效使用组功能”

我不明白! 我听说有其他可能性来获得这个,但我有点必须用子选择。 我非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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

请注意,这方面的难点在于概念清晰地说明您在虚拟表的用语中尝试做什么。