2012-03-13 3 views
1

시나리오 :한 달에 매일 총 # 개의 레코드를 얻는 하나의 쿼리

테이블이 있으며 날짜/시간 열이 있습니다.

이번 달의 일일 등록 수를 보여주는 웹 페이지에 막대 그래프를 표시하려고합니다.

하나의 검색어로 어떻게 할 수 있습니까? 즉 그날의 등록 건수 (현재 달)에 대한 필드가있는 결과를 얻으십시오.

답변

5
select day(Date), count(*) 
from table 
where month(Date) = month(NOW()) and year(Date) = year(NOW()) 
group by day(Date) 

"Where"절이 현재 달을 선택합니다.

SELECT Day, COUNT(*) 
FROM XXX_Users 
GROUP BY DATE(created) as Day 

:

SELECT Day, COUNT(*) 
FROM XXX_Users 
GROUP BY "date extracted from datetime" as Day 

당신이 DATE 기능을 사용할 수 날짜에서 날짜를 추출하려면 다음이 의사 코드 같은 count(whatever) 또는 count(distinct whatever) 대신 count(*)의 ...

+0

'month (date)'및'year (dat) 이후로 날짜 범위를 사용하는 것이 더 나을 수도 있습니다. e)'는 색인이 생성되지 않습니다. –

+0

이렇게하면 하루 종일 걸리지는 않으며, DB에 레코드가있는 것뿐입니다. 모든 요일에 갈 수있는 방법이 없으며 기록이없는 경우 0을 얻으시겠습니까? – Alvaro

+0

@Steve, 좋은 질문입니다. 실제로 코딩 과정에서 여러 번 보았습니다 ... 가장 좋은 해결책은 프레젠테이션 계층에서 SQL 외부에서이를 수행하는 것입니다. – TMS

0

뭔가를 사용할 수 있습니다 또는 내부의 모든 로직을 묶는 저장 프로 시저를 만들 수 있습니다.