GROUP BY 쿼리를 사용하면 존재하는 레코드를 기반으로 그룹을 가져 오므로 그룹화 열에 주어진 값을 가진 레코드가 없으면 해당 값에 대한 그룹이 없습니다. 데이터베이스가 당신이 관심을 가질만한 다른 날짜 값을 추가하는 것을 알지는 못합니다.
기본값은 0
인 새 해시를 만든 다음 그걸 질문해라. 이후 해시에서 항목이없는 값을 검색하려고하면 결과가 0이됩니다.
편집 : 당신이 확실 범위 내의 모든 날짜의 해시에 항목이 만들고 싶어 당신이 그 이상 반복 할 수 있도록, 또는 .values
date_counts = Hash.new(0)
date_counts.merge! Item.group("date(created_at)").count
를 제거 ...
date_counts = {}
(Date.civil(2010,1,1)...Date.civil(2010,2,1)).each do |date|
date_counts[date]=0
end
date_counts.merge! Item.group("date(created_at)").count
업데이트
{Sun, 01 May 2011=>0, Mon, 02 May 2011=>0, Tue, 03 May 2011=>0, Wed, 04 May 2011=>0, Thu, 05 May 2011=>0, Fri, 06 May 2011=>0, Sat, 07 May 2011=>0, Sun, 08 May 2011=>0, Mon, 09 May 2011=>0, Tue, 10 May 2011=>0, Wed, 11 May 2011=>0, Thu, 31 Mar 2011=>2, Sun, 03 Apr 2011=>1, Fri, 08 Apr 2011=>643, Sat, 09 Apr 2011=>2360, Sun, 10 Apr 2011=>705, Mon, 11 Apr 2011=>34}
{Sun, 01 May 2011=>0, Mon, 02 May 2011=>0, Tue, 03 May 2011=>0, Wed, 04 May 2011=>0, Thu, 05 May 2011=>0, Fri, 06 May 2011=>0, Sat, 07 May 2011=>0, Sun, 08 May 2011=>0, Mon, 09 May 2011=>0, Tue, 10 May 2011=>0, Wed, 11 May 2011=>0, Sat, 02 Apr 2011=>1, Fri, 08 Apr 2011=>4158, Sat, 09 Apr 2011=>12206, Sun, 10 Apr 2011=>4279, Mon, 11 Apr 2011=>169}
{Sun, 01 May 2011=>0, Mon, 02 May 2011=>0, Tue, 03 May 2011=>0, Wed, 04 May 2011=>0, Thu, 05 May 2011=>0, Fri, 06 May 2011=>0, Sat, 07 May 2011=>0, Sun, 08 May 2011=>0, Mon, 09 May 2011=>0, Tue, 10 May 2011=>0, Wed, 11 May 2011=>0}
확실하지 않음을 일으키는 원인 흠 ... : 나는 그것이 다른 길이 해시를 얻을 이상하게도, 여기에 내 날짜 범위와 모델을 통과 할 때 510,403,210은 여기에 몇 가지 출력됩니다.
흠 .. 나는 '형식 오류 : 배열을 해시로 변환 할 수 없습니다.', '병합!'이 발생했습니다. 이상합니다.이게 무슨 일 이니? –
내가 사용한 Arel 구문이 .count (: group => : created_at)와 같다고 가정했는데, 순서가 지정된 해시를 반환하지만 그와 동일한 것은 아닙니다. –
오 - 대기. 귀하의'.values'를 복사했는데 날짜 키가 없어졌습니다. 편집 중 ... –