지난 12 개월 동안 특정 달 동안 활성 상태 인 사용자를 가져 오는 쿼리를 작성하는 방법을 고민 중입니다. 2017 년 1 월에 거래가 시작되었습니다.월별로 12 개월 동안 롤업 한 사용자의 비율로 월간 거래 사용자 - 그룹 : Postgres
예 :
거래를 만든 년 12 월 2017, 그리고 무엇을 위해이 2016년 12월을 통해 거래 모두의 비율로 - 2017년 12월
난 데 문제는 내가 그 또한 |
고객 ID : 그들의 제품 및 국가 여기
하여 그룹에 필요한 이러한 사용자 내가 가진 행입니다 transaction_date | 수신 국가 | 구입 한 제품 | 트랜잭션 ID
내가 좋아하는 몇 가지 방법을 시도 :
WITH transacting_dec_users AS (
SELECT
user_id AS transactor,
COUNT(*) AS transactions
FROM database
WHERE transaction_date >= '2017-12-01'
GROUP BY user_id),
dec_actives AS (
SELECT
user_id,
transactions,
COUNT(*) AS active_in_12_months,
product,
receive_country,
sender_country
FROM database t1
LEFT OUTER JOIN transacting_users t2 ON t2.transactor = t1.user_id
WHERE transaction_date >= '2016-12-01'
GROUP BY 1,2,4,5,6)
SELECT
SUM(CASE WHEN transactions IS NULL THEN 1 ELSE 0 END) AS actives_not_transact,
SUM(CASE WHEN transactions IS NOT NULL THEN 1 ELSE 0 END) AS transactor
FROM actives
내가했던 서브 쿼리를 수행하려고하지만 그룹에 국가 및 제품에 각 고객이 필요로 나는 그들을 내 그룹과 함께 동작하지 않습니다
내 이상적인 결과는 다음과 같습니다 원하는 결과
샘플 데이터와 원하는 결과는 정말 도움이 될 것이다 - 같은 것 나도 –
물론, 내가 말한 모두 포스트 그레스와 PrestoDB에 대한 확고한 의지 그냥 이상적인 결과물을 추가했습니다. 이해가 되나요? 따라서 12 월에 거래 한 사람을 얻을 수는 없습니다. 제품 및 국가별로 데이터를 그룹화해야하므로 12 개월 단위로 거래하는 사람들의 비율로 볼 수 있습니다. – MassiveOwl
에 쿼리를 실행할 수 있기 때문에 하나의 데이터베이스 또는 다른 (포스트 그레스는 Presodb?) – MassiveOwl