2012-10-26 3 views
0

이상한 이유로 주별 그룹은 날짜/시간 필드가있는 홀수 날짜 간격을 반환합니다. "완료"이상한 간격을 반환하는 주별 그룹

는 날짜 필드이며,이 쿼리를 사용하여 :

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 일 대신에 이상한 간격으로 날짜를 그룹화하는 이유는 무엇입니까?

답변

1

week 함수는 날짜의 차이를 계수하지 않습니다.

week 함수는 날짜의 주 번호를 반환합니다. 그룹으로 묶는다면 그 그룹의 시작과 끝의 날짜가 될 것입니다. 단일 날짜 간의 차이는 7 일 또는 그 이하 일 수 있습니다.

+0

잘 모르겠 음 ... 주 번호를 반환하는 경우, 그 주 수의 차이가 7 일보다 더 많거나 적을 수 있습니까? –

+0

주 숫자는 숫자입니다. 1 학년의 첫 주에는 1이 있고, 두 번째에는 견인 수가 있습니다. 그러나 그 주에 날짜를 선택하고 있습니다. 일부 날짜는 일주일 초에, 일부는 마지막에 있습니다. 그러나 당신이 만드는 그룹은 일주일에 한 번 있습니다. –

+1

SELECT 문은 집계되지 않은 열을 선택합니다. 그건 MySQL에서 작동하지만 당신 cunfusion로 이어집니다. –

0

대답은 juergen d에서 암시하는 것처럼 날짜 간격을 집계하는 것이 었습니다. 일관된 간격으로 사용되는 첫날 또는 마지막 요일 중 원하는 날짜에 따라 min 또는 max를 사용합니다. 예 :

SELECT MIN (완료), COUNT (DISTINCT 테이블 1.ID) AS ActivityCount FROM Table1 JOIN 테이블 1 항목 ON Table1.ID = 테이블 1 항목 ID 조인 database_database.Table2 ON Table2.Item = 테이블 1 항목 .Item WHERE Completed! = ' 0000-00-00 'AND 완료> ='2012-09-25 'AND 완료 < ='2012-10-25 '주별 그룹 (완료)

관련 문제