按周分组返回奇怪的间隔

时间:2012-10-26 01:55:30

标签: mysql group-by

由于某些奇怪的原因,按周分组返回奇数日期间隔和日期时间字段。

“已完成”是一个日期时间字段,并使用此查询:

SELECT 
    Completed, 
    COUNT( DISTINCT Table1.ID ) AS ActivityCount 
FROM Table1 
JOIN Table1Items 
ON Table1.ID = Table1Items.ID 
JOIN database_database.Table2 
ON Table2.Item = Table1Items.Item 
WHERE Completed != '0000-00-00' AND Completed >= '2012-09-25' AND Completed <= '2012-10-25' 
GROUP BY WEEK(Completed)

我得到了:

Completed  ActivityCount    CompletedTimestamp
2012-09-25  300            2012-09-25 00:00:00
2012-10-02  764            2012-10-02 00:00:00
2012-10-08  379            2012-10-08 00:00:00
2012-10-17  659            2012-10-17 00:00:00
2012-10-22  382            2012-10-22 00:00:00
有些人相隔7天,其他人相隔6天,其他人则是5天......其中一人是9天?

为什么它会按如此奇怪的间隔而不是仅仅7天对日期进行分组?

2 个答案:

答案 0 :(得分:1)

week函数不计算日期的差异。

week函数返回日期的周数。如果你按它分组,那么在该组中将是在一周的开始和结束时以及之间的日期。单个日期之间的差异可能大于7天或更短。

答案 1 :(得分:0)

juergen d提到的答案是汇总日期列 - 使用最小值或最大值,具体取决于您是否希望将一周的第一天或最后一天用作一致的间隔; e.g:

SELECT MIN(已完成),COUNT(DISTINCT Table1.ID)AS ActivityCount FROM Table1 JOIN Table1Items ON Table1.ID = Table1Items.ID JOIN database_database.Table2 ON Table2.Item = Table1Items.Item WHERE Completed!='0000-00 -00'与完成&gt; ='2012-09-25'并完成&lt; ='2012-10-25'每周一组(已完成)