erDiagram
Visits {
int visit_id PK
int customer_id
}
Transactions {
int transaction_id PK
int visit_id FK
int amount
}
Visits ||--o{ Transactions : has
방문 후, 거래가 없는 고객들의 id와 그 수
문제 풀이
MySQL 1
WITH no_trans as (
SELECT v.customer_id, t.transaction_id
FROM visits v
LEFT JOIN transactions t ON v.visit_id = t.visit_id
)
SELECT customer_id, count(*) as count_no_trans
FROM no_trans
WHERE transaction_id is null
GROUP BY customer_id
LEFT JOIN을 통해서, 방문은 했지만 거래 데이터가 없는 사람들까지 표현해준다.
이후 GROUP BY COUNT를 통해서 개수 카운팅해주기.
MySQL 2
SELECT V.CUSTOMER_ID, COUNT(*) AS COUNT_NO_TRANS
FROM VISITS V
LEFT JOIN TRANSACTIONS T ON V.VISIT_ID = T.VISIT_ID
WHERE T.TRANSACTION_ID IS NULL
GROUP BY V.CUSTOMER_ID
댓글