Make your choice

Clientes que visitaron el centro comercial pero no hicieron ninguna transacci贸n

Escribe una soluci贸n para encontrar los IDs de los usuarios que visitaron el centro comercial sin hacer ninguna transacci贸n y el n煤mero de veces que hicieron ese tipo de visitas. Regresa el resultado ordenado en cualquier orden.

#database#basic-joins

Tabla: Visits

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| visit_id    | int     |
| customer_id | int     |
+-------------+---------+
- `visit_id` contiene valores 煤nicos en esta tabla.
- Esta tabla contiene informaci贸n acerca de los clientes que visitaron el centro comercial.

Tabla: Transactions

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| transaction_id | int     |
| visit_id       | int     |
| amount         | int     |
+----------------+---------+
- `transaction_id` contiene valores 煤nicos en esta tabla.
- Esta tabla contiene informaci贸n acerca de las transacciones hechas durante la `visit_id`.

El formato del resultado se encuentra en el siguiente ejemplo.

Ejemplo 1:

Entrada:

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    |
+----------------+----------+--------+

Salida:

+-------------+----------------+
| customer_id | count_no_trans |
+-------------+----------------+
| 54          | 2              |
| 30          | 1              |
| 96          | 1              |
+-------------+----------------+

Explicaci贸n:
- El cliente con id = 23 visit贸 el centro comercial una vez e hizo una transacci贸n durante la visita con id = 12.
- El cliente con id = 9 visit贸 el centro comercial una vez e hizo una transacci贸n durante la visita con id = 13.
- El cliente con id = 30 visit贸 el centro comercial una vez y no realiz贸 ninguna transacci贸n.
- El cliente con id = 54 visit贸 el centro comercial tres veces. Durante 2 visitas no realiz贸 ninguna transacci贸n, y durante una visita realiz贸 3 transacciones.
- El cliente con ID = 96 visit贸 el centro comercial una vez y no realiz贸 ninguna transacci贸n.
- Como vemos, los usuarios con ID 30 y 96 visitaron el centro comercial una vez sin realizar ninguna transacci贸n. Adem谩s, el usuario 54 visit贸 el centro comercial dos veces y no realiz贸 ninguna transacci贸n.

Soluci贸n

SELECT v.customer_id,
COUNT(v.customer_id) AS count_no_trans
FROM visits v
LEFT JOIN transactions t ON t.visit_id = v.visit_id
WHERE t.transaction_id IS NULL GROUP BY v.customer_id;

slackmart blog 漏 2024