【力扣白嫖日记】SQL

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

1581.进店却未进行过交易的顾客
表:Visits

列名 类型
visit_id int
customer_id int

visit_id 是该表中具有唯一值的列。该表包含有关光临过购物中心的顾客的信息。

表:Transactions

列名 类型
transaction_id int
visit_id int
amount int

transaction_id 是该表中具有唯一值的列。此表包含 visit_id 期间进行的交易的信息。

有一些顾客可能光顾了购物中心但没有进行交易。请你编写一个解决方案,来查找这些顾客的 ID ,以及他们只光顾不交易的次数。
返回以 任何顺序 排序的结果表。


我那不值一提的想法:

我的思路:

  • 首先梳理表内容,题目一共给了两张表,一张顾客表,记录了光顾id以及顾客id,一张交易表,记录了交易id,光顾id,和金额。
  • 其次分析需求,需要找到顾客只光顾但是不交易的次数。意思就是在第一个表中看光顾id,看是否出现在第二张交易表中,如果没有出现,就证明只光顾了,没有消费,我们就要找到这些id。我们可以通过左连接的方式,直接把第一张表当做主表,这样如果没有交易信息,就会在连接表中显示null,然后我们再通过where筛选出交易id是null的所有顾客id。就能得出结果
select customer_id,count(customer_id) 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 customer_id

结果:

【力扣白嫖日记】SQL_第1张图片


总结:

能运行就行。


你可能感兴趣的:(力扣刷题,leetcode,sql,数据库)