Published: Thu 28 September 2023
By woogiereal
In MySQL .
tags: MySQL 응용
테이블과 결과
Input :
Visits
+----------+-------------+
| visit_id | customer_id |
+----------+-------------+
| 1 | 23 |
| 2 | 9 |
| 4 | 30 |
| 5 | 54 |
| 6 | 96 |
| 7 | 54 |
| 8 | 54 |
+----------+-------------+
visit_id is the primary key for this table .
This table contains information about the customers who visited the mall .
Transactions
+----------------+----------+--------+
| transaction_id | visit_id | amount |
+----------------+----------+--------+
| 2 | 5 | 310 |
| 3 | 5 | 300 |
| 9 | 5 | 200 |
| 12 | 1 | 910 |
| 13 | 2 | 970 |
+----------------+----------+--------+
transaction_id is the primary key for this table .
This table contains information about the transactions made during the visit_id .
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 .
문제
Write an SQL query to find the IDs of the users who visited without making any transactions and the number of times they made these types of visits.
답
SELECT
v.customer_id AS customer_id
,COUNT(v.customer_id) 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
;