데이터 분석 전문가로서 지난 3개월 동안 사용자 목록, 라이선스 유형, 사용자가 로그인한 고유 일수를 표시하도록 SQL 쿼리를 작성합니다. 개월당 로그인 수가 가장 많은 것부터 가장 적은 것까지 순서대로 정렬합니다.
응답
WITH MonthlyLogins AS (
SELECT
Username,
LicenseType,
DATE_TRUNC('month', LoginTime) AS LoginMonth,
COUNT(DISTINCT DATE(LoginTime)) AS UniqueLoginDays
FROM your_table
WHERE LoginTime >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '3 month')
GROUP BY Username, LicenseType, LoginMonth
)
SELECT
Username,
LicenseType,
SUM(UniqueLoginDays) AS TotalUniqueLoginDays
FROM MonthlyLogins
GROUP BY Username, LicenseType
ORDER BY TotalUniqueLoginDays DESC;
설명:
WITH MonthlyLogins AS(...): 각 월별로 각 사용자 및 라이선스 유형에 대한 고유한 로그인 일 수를 계산하는 MonthlyLogins라는 공통 테이블 표현식(CTE)을 정의합니다.
SELECT ... FROM your_table WHERE LoginTime >= ...: 테이블에서 관련 데이터를 선택하고 지난 3개월 이내의 로그인 이벤트를 필터링합니다.
DATE_TRUNC('month', LoginTime) AS LoginMonth: LoginTime 열에서 월의 시작 부분을 추출하고 LoginMonth로 별칭을 지정합니다.
COUNT(DISTINCT DATE(LoginTime)) AS UniqueLoginDays: 각 월의 고유한 로그인 날짜를 집계하여 고유한 로그인 일 수를 제공합니다.
GROUP BY Username, LicenseType, LoginMonth: 사용자 이름, 라이선스 유형, 로그인 월별로 결과를 그룹화합니다.
SELECT ... FROM MonthlyLogins GROUP BY Username, LicenseType: 사용자 이름, 라이선스 유형을 선택하고 모든 월의 각 사용자 및 라이선스 유형에 대해 UniqueLoginDays의 합계를 구합니다.
ORDER BY TotalUniqueLoginDays DESC: 총 고유 로그인 일수를 기준으로 결과를 내림차순으로 정렬합니다.
참고:
your_table을 테이블의 실제 이름으로 바꿉니다.
이 쿼리에서는 LoginTime 열이 타임스탬프 또는 날짜/시간 데이터 유형이라고 가정합니다.
DATE_TRUNC 함수는 특정 데이터베이스 시스템에 따라 다를 수 있습니다.
이 쿼리를 실행하면 지난 3개월 동안 로그인한 사용자, 라이선스 유형, 총 고유 일수를 가장 높은 로그인 일수부터 가장 낮은 로그인 일수까지 정렬한 목록을 제공합니다.