Min,Max,Group By和DateDiff

时间:2011-08-15 20:21:47

标签: mysql

我正在尝试将许多MySQL语句优化为一个,但遇到了一个问题。

MySQL查询:

  SELECT companyid, COUNT(*) AS total 
    FROM timesheet 
   WHERE userId='1' 
     AND DATEDIFF(MIN(startDate), MAX(endDate)) <= 77 
GROUP BY companyid 
  HAVING total = 11

我要做的是选择所有存在11条记录的公司,并在11周内创建第一条和最后一条记录。我得到的错误是“无效使用组功能”。

这与MIN(), MAX()DATEDIFF()部分有关,但我不能为我的生活弄明白这一点!

1 个答案:

答案 0 :(得分:2)

聚合函数需要在HAVING子句中,而不是WHERE子句。 (例如你的DATEDIFF(MIN(startDate), MAX(endDate)) <= 77条件)

将HAVING视为应用于分组记录,并将WHERE应用于各个记录,然后再进行分组。