2010-08-18 2 views
0

시스템에 대한 사용자 로그인을 추적하는 user_logins라는 테이블이 있습니다. 그것은 세 개의 열, login_ID에 266 나는 매일에 대해 고유 한 로그인 수를 결정하고 각 달이를 계산하는 쿼리를 작성 찾고 있어요TIMESTAMP를 기준으로 한 MySQL 그룹화 월

login_id(INT) | user_id(INT) | login_time(TIMESTAMP) 
------------------------------------------------------ 
    1  |  4  | 2010-6-14 08:54:36 
    1  |  9  | 2010-7-16 08:56:36 
    1  |  9  | 2010-8-16 08:59:19 
    1  |  9  | 2010-8-16 09:00:24 
    1  |  1  | 2010-8-16 09:01:24 

login_time 있습니다. 사용자가 두 번 로그인 한 날에는 한 번만 계산됩니다. USER_ID (9)는 하루에 두 번 로그인 시스템이 해당 일에 대한 1 개 로그인으로 계산에 그를 로그인 때문에 8 월에만 2가 결과 테이블에

month(VARCHAR) | logins(INT) 
--------------------------- 
June  |  1 
July  |  1 
August  |  2 

을 다음과 같이 예를 출력 할 것이다.

스택 오버플로를 통해 나는 이것을 달성하는 쿼리를 작성했지만, '% M'과 함께 DATE_FORMAT 함수를 사용하여 최대 절전 모드를 사용하는 값을 Java에서 읽으려고 할 때 사용하는 쿼리를 작성했습니다 객체가 손상되어 문자열로 인식되지 않습니다. 아마도 내 쿼리가 잘못된 일을하고 있기 때문일 수도 있습니다. 내 쿼리는 다음과 같습니다 :

SELECT login_date, SUM(logins) as numLogins FROM (
    SELECT 
     DATE_FORMAT(DATE(login_time), '%M') AS login_date, 
     COUNT(DISTINCT login_id) AS logins 
    FROM user_logins 
    WHERE login_time > DATE_SUB(NOW() - INTERVAL 1 YEAR) 
    GROUP BY DATE(login_time)) 
AS Z GROUP BY(login_date)"; 
+0

여기에 오타가 있거나 코드를 복사 한 경우 확실하지 않지만 첫 줄 끝에 "FROM"대신 "FRMO"가 있습니다. – gabe3886

+0

음, 내 파트의 오타가 편집되었습니다. – IamBanksy

답변

1

왜 달을 숫자 값으로 사용 하시겠습니까?

+0

구문 오류가 발생했습니다. 추출 방법을 알지 못했습니다. – IamBanksy

+0

나를 위해 MySQL 5.0 작동 –

관련 문제