시스템에 대한 사용자 로그인을 추적하는 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)";
여기에 오타가 있거나 코드를 복사 한 경우 확실하지 않지만 첫 줄 끝에 "FROM"대신 "FRMO"가 있습니다. – gabe3886
음, 내 파트의 오타가 편집되었습니다. – IamBanksy