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