2010-06-07 8 views
0

일부 통계를 표시하기 위해 demographioc 테이블을 조회하려고합니다. 그러나, 인구 통계 학적 테이블이 크게 종료 되었기 때문에 나는 하나의 쿼리에서 그것을하고 싶다.MYSQL - 여러 카운트 문장

중요한 두 분야가 있습니다

내가 여러 날짜 범위에 대한 로그인 (< 일일 전에 1-7 일 전, 7~30일의 총 수를 얻을 수 있기를 원하는 LAST_LOGIN 섹스, 예전 등) GROUPED BY SEXY

이제는 한 기간 동안 어떻게 해야할지 잘 알고 있습니다. 미만 1 일 전 예 :

sex  peeps 
---------------- 
UNKNOWN 22 
MALE  43 
FEMALE 86 

그러나 나는 각 범위에 대해 한 번이 작업을 수행해야 할 것 : 리턴

SELECT sex, count(*) peeps 
    FROM player_account_demo 
WHERE last_demo_update > 1275868800 
GROUP BY sex 

. 거기에 3 가지 범위를 모두 얻을 수있는 방법이 있습니까?

나는이 같은 것을보고 내 최종 결과를 원하는 것 :

sex  peeps<1day  peeps1-7days  peeps7-30days 

감사합니다!

중요 참고 : 마지막 demo_update는 (유닉스 타임 스탬프)

답변

2
SELECT sex, 
    SUM(IF(DATEDIFF(NOW(),last_login) < 1,1,0)), 
    SUM(IF(DATEDIFF(NOW(),last_login) BETWEEN 1 AND 7,1,0)), 
    SUM(IF(DATEDIFF(NOW(),last_login) BETWEEN 7 AND 30,1,0)) 
FROM player_account_demo 
GROUP BY sex 
+0

Thx 이것이 올바른 길로 나를 잡았습니다. – darudude

0

당신은 Pivot Table을 사용할 시대 시간입니다.

+0

피봇 테이블은 오른쪽 표시 용입니까? 나는 전체 테이블을 선택하지 않고도 PHP에서 모든 것을 할 필요없이 1 개의 쿼리에서 모든 것을 선택할 수 있기를 원한다. – darudude

+0

이것은 쿼리 언어에서 지원하는 개념이 아닙니다. 정말로하고 싶다면 SELECT 문에서 사례 별 체크를 함께 해킹 할 수 있습니다 (예 : Wrikken의 응답 참조). – VeeArr

+1

'PIVOT'과'UNPIVOT'는 ANSI입니다,하지만 SQL Server 2005+와 Oracle 11g +에서만 지원됩니다. 그 문제에 대한 사례는 ANSI-92 ... –