1581. Customer Who Visited but Did Not Make Any Transactions
table: Visits
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| visit_id | int |
| customer_id | int |
+-------------+---------+
visit_id is the column with unique values for this table.
This table contains information about the customers who visited the mall.
Table: Transactions
+----------------+---------+
| Column Name | Type |
+----------------+---------+
| transaction_id | int |
| visit_id | int |
| amount | int |
+----------------+---------+
transaction_id is column with unique values for this table.
This table contains information about the transactions made during the visit_id.
Write a solution to find the IDs of the users who visited without making any transactions and the number of times they made these types of visits.
Return the result table sorted in any order.
The result format is in the following example.
Example 1:
Input:
Visits
+----------+-------------+
| visit_id | customer_id |
+----------+-------------+
| 1 | 23 |
| 2 | 9 |
| 4 | 30 |
| 5 | 54 |
| 6 | 96 |
| 7 | 54 |
| 8 | 54 |
+----------+-------------+
Transactions
+----------------+----------+--------+
| transaction_id | visit_id | amount |
+----------------+----------+--------+
| 2 | 5 | 310 |
| 3 | 5 | 300 |
| 9 | 5 | 200 |
| 12 | 1 | 910 |
| 13 | 2 | 970 |
+----------------+----------+--------+
Output:
+-------------+----------------+
| customer_id | count_no_trans |
+-------------+----------------+
| 54 | 2 |
| 30 | 1 |
| 96 | 1 |
+-------------+----------------+
Explanation:
Customer with id = 23 visited the mall once and made one transaction during the visit with id = 12.
Customer with id = 9 visited the mall once and made one transaction during the visit with id = 13.
Customer with id = 30 visited the mall once and did not make any transactions.
Customer with id = 54 visited the mall three times. During 2 visits they did not make any transactions, and during one visit they made 3 transactions.
Customer with id = 96 visited the mall once and did not make any transactions.
As we can see, users with IDs 30 and 96 visited the mall one time without making any transactions. Also, user 54 visited the mall twice and did not make any transactions.
방문은 했지만, 거래가 이루어지지 않은 고객id(customer_id)와 횟수(count_no_trans)를 출력하는 쿼리문을 작성하시오.
정답쿼리
select v.customer_id,
count(v.visit_id) as count_no_trans
from visits as v
left join transactions as t
on v.visit_id = t.visit_id
where t.transaction_id is null
group by v.customer_id
다른 풀이
- NOT IN 사용
SELECT
customer_id,
COUNT(visit_id) AS count_no_trans
FROM
Visits
WHERE
visit_id NOT IN (
SELECT
visit_id
FROM
Transactions
)
GROUP BY
customer_id
끝.
'SQL' 카테고리의 다른 글
| [SQL/코드카타] 하루 전 보다 온도가 높은 데이터 값 찾기 (0) | 2025.10.30 |
|---|---|
| [SQL/코드카타] 문자열의 길이 세기 (0) | 2025.10.29 |
| [SQL/코드카타] 프로그래머스 - 상품을 구매한 회원 비율 구하기 (0) | 2025.10.27 |