题目:有一些顾客可能光顾了购物中心但没有进行交易。来查找这些顾客的 ID ,以及他们只光顾不交易的次数。
准备数据
分析数据
题目:有一些顾客可能光顾了购物中心但没有进行交易。来查找这些顾客的 ID ,以及他们只光顾不交易的次数。
准备数据
## 创建库
create database db;
use db;
## 创建visits表
Create table If Not Exists Visits(visit_id int, customer_id int);
## 创建Transactions表
Create table If Not Exists Transactions(transaction_id int, visit_id int, amount int);
## 向Visits插入数据
Truncate table Visits;
insert into Visits (visit_id, customer_id) values ('1', '23');
insert into Visits (visit_id, customer_id) values ('2', '9');
insert into Visits (visit_id, customer_id) values ('4', '30');
insert into Visits (visit_id, customer_id) values ('5', '54');
insert into Visits (visit_id, customer_id) values ('6', '96');
insert into Visits (visit_id, customer_id) values ('7', '54');
insert into Visits (visit_id, customer_id) values ('8', '54');
## 向Transactions插入数据
Truncate table Transactions;
insert into Transactions (transaction_id, visit_id, amount) values ('2', '5', '310');
insert into Transactions (transaction_id, visit_id, amount) values ('3', '5', '300');
insert into Transactions (transaction_id, visit_id, amount) values ('9', '5', '200');
insert into Transactions (transaction_id, visit_id, amount) values ('12', '1', '910');
insert into Transactions (transaction_id, visit_id, amount) values ('13', '2', '970');
输入表
visits表
transactions表
分析数据
ID = 23 的顾客曾经逛过一次购物中心,并在 ID = 12 的访问期间进行了一笔交易。 ID = 9 的顾客曾经逛过一次购物中心,并在 ID = 13 的访问期间进行了一笔交易。 ID = 30 的顾客曾经去过购物中心,并且没有进行任何交易。 ID = 54 的顾客三度造访了购物中心。在 2 次访问中,他们没有进行任何交易,在 1 次访问中,他们进行了 3 次交易。 ID = 96 的顾客曾经去过购物中心,并且没有进行任何交易。 如我们所见,ID 为 30 和 96 的顾客一次没有进行任何交易就去了购物中心。顾客 54 也两次访问了购物中心并且没有进行任何交易。
第一步:
## 第一步:将visits表作为左连接,让那些没有交易为null值
select v.customer_id,v.visit_id,t.transaction_id,amount
from visits v left join transactions t on v.visit_id = t.visit_id;
第二步:
## 第二步:对没有交易的顾客记性count()统计
select v.customer_id,count(*) as count_no_trans
from visits v left join transactions t on v.visit_id = t.visit_id
where transaction_id is null
group by v.customer_id;