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.
This approach utilizes SQL LEFT JOIN to find all visits that do not have corresponding transactions and GROUP BY to count the occurrences.
Since C is a lower-level language and does not natively support SQL operations, using a library like SQLite3 allows you to perform database operations. Correct database connections and execution functions are required to run the query. The SQL query will filter and group data appropriately within the database.
C++
Java
Python
C#
JavaScript
Time Complexity: O(N + M), where N is the number of rows in the Visits table and M is the number of rows in the Transactions table.
Space Complexity: O(K), where K is the number of unique customer_id entries in the result set.
This approach uses a subquery with NOT EXISTS to find all visits by customers that do not appear in the Transactions table.
For low-level languages like C, a library such as SQLite3 offers the capability to execute SQL queries. By utilizing subqueries and the NOT EXISTS clause, it's possible to efficiently filter based on the absence of transactions.
C++
Java
Python
C#
JavaScript
Time Complexity: O(N * M), where N is the number of rows in the Visits table and M is the number of rows in the Transactions table.
Space Complexity: O(K), where K is the number of unique customer_id entries in the result set.
| Approach | Complexity |
|---|---|
| SQL Join and Group By Method | Time Complexity: O(N + M), where N is the number of rows in the Visits table and M is the number of rows in the Transactions table. |
| SQL Subquery and NOT EXISTS | Time Complexity: O(N * M), where N is the number of rows in the Visits table and M is the number of rows in the Transactions table. |
LeetCode 1581 Interview SQL Question with Detailed Explanation | Practice SQL • Everyday Data Science • 15,603 views views
Watch 9 more video solutions →Practice Customer Who Visited but Did Not Make Any Transactions with our built-in code editor and test cases.
Practice on FleetCode