2015-01-25 3 views
0

저는 다른 지역의 사용자 수에 대한 데이터를 일부 selcted 나이까지 가져올 mysql 쿼리를 작성하려고합니다. 예를 들어 : 내가 나이 0-14을 선택하면 내가 '북쪽', '남쪽'에서 얼마나 많은 사용자를 얻기 위해 원하는 등 연령 0 ~ 14선택한 연령별로 다른 지역의 사용자 수를 계산합니다.

내가 현재 쿼리 쓰고 있어요 사이 :

SELECT sum(case when districts.`districtId` = 1 then 1 else 0 end) as 'North', 
    sum(case when districts.`districtId` = 4 then 1 else 0 end) as 'Center', 
    sum(case when districts.`districtId` = 6 then 1 else 0 end) as 'South', , (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(userDetails.birthDate2, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(userDetails.birthDate2, '00-%m-%d'))) as age 

출처 .... 0에서 14 사이의 나이입니다. 하지만 알 수없는 연령 열이 표시됩니다. 이 쿼리를 작성하는 다른 방법이 있습니까?

답변

0

는 ..

SELECT districts.districtId, count(userDetails.*) 
FROM userDetails, districts 
INNER JOIN districts ON userDetails.districtId = districts.districtId 
WHERE userDetails.birthDate2 >= (DATE_SUB(NOW(), INTERVAL 14 YEAR) 
AND userDetails.birthDate2 <= (DATE_SUB(NOW(), INTERVAL 0 YEAR) 
GROUP BY districts.districtId 

그리고 다른 질문에 대한 데이터베이스 스키마를 게시하려고

을 시도

편집 : 나는 당신이 전체를 제공하지 않기 때문에 GROUP BY Clausse

+0

물론 , AlonsoFloo에 의해 위의 대답에서 Group By 절을 추가하십시오. –

+0

내가 선택한 것을 내 것으로 바꾼다면. 그것은 작동합니다. 답변 해주셔서 감사합니다. –

0

를 잊으셨습니까 쿼리에서 값을 입력하십시오 :

Select districts.districtId, count(*) as DistrictwiseCount From ... Where age_criterion_goes_here 
    Group By districts.districtId 
관련 문제