大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:1581. 进店却未进行过交易的顾客
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范③
      • 提交SQL
      • 运行结果
    • 4.正确示范④
      • 提交SQL
      • 运行结果
    • 5.正确示范⑤
      • 提交SQL
      • 运行结果
  • 总结

前言


一、题目:1581. 进店却未进行过交易的顾客

表:Visits

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| visit_id    | int     |
| customer_id | int     |
+-------------+---------+

visit_id 是该表的主键。
该表包含有关光临过购物中心的顾客的信息。
表:Transactions

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| transaction_id | int     |
| visit_id       | int     |
| amount         | int     |
+----------------+---------+

transaction_id 是此表的主键。
此表包含 visit_id 期间进行的交易的信息。

有一些顾客可能光顾了购物中心但没有进行交易。请你编写一个 SQL 查询,来查找这些顾客的 ID ,以及他们只光顾不交易的次数。
返回以 任何顺序 排序的结果表。
查询结果格式如下例所示。

输入:
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    |
+----------------+----------+--------+
输出:
+-------------+----------------+
| customer_id | count_no_trans |
+-------------+----------------+
| 54          | 2              |
| 30          | 1              |
| 96          | 1              |
+-------------+----------------+

解释:
ID = 23 的顾客曾经逛过一次购物中心,并在 ID = 12 的访问期间进行了一笔交易。
ID = 9 的顾客曾经逛过一次购物中心,并在 ID = 13 的访问期间进行了一笔交易。
ID = 30 的顾客曾经去过购物中心,并且没有进行任何交易。
ID = 54 的顾客三度造访了购物中心。在 2 次访问中,他们没有进行任何交易,在 1 次访问中,他们进行了 3 次交易。
ID = 96 的顾客曾经去过购物中心,并且没有进行任何交易。
如我们所见,ID 为 30 和 96 的顾客一次没有进行任何交易就去了购物中心。顾客 54 也两次访问了购物中心并且没有进行任何交易。

二、解题

1.正确示范①

提交SQL

select customer_id,count(1) count_no_trans
from Visits u1
left join Transactions u2
on u1.visit_id=u2.visit_id
where u2.visit_id is null
group by customer_id;

运行结果

2.正确示范②

提交SQL

select customer_id,count(*) count_no_trans
from Visits u1
left join Transactions u2
on u1.visit_id=u2.visit_id
where u2.visit_id is null
group by customer_id;

运行结果

3.正确示范③

提交SQL

select customer_id,count(u1.visit_id) count_no_trans
from Visits u1
left join Transactions u2
on u1.visit_id=u2.visit_id
where u2.visit_id is null
group by customer_id;

运行结果

4.正确示范④

提交SQL

select customer_id,sum(1) count_no_trans
from Visits u1
left join Transactions u2
on u1.visit_id=u2.visit_id
where u2.visit_id is null
group by customer_id;

运行结果

5.正确示范⑤

提交SQL

select customer_id,count(1) count_no_trans
from Visits
where visit_id not in(select visit_id from Transactions
)
group by customer_id;

运行结果


总结

正确示范①思路:
left join + group by +count(1)
正确示范②思路:
left join + group by +count(*)
正确示范③思路:
left join + group by +count(u1.visit_id)
正确示范④思路:
left join + group by +sum(1)
正确示范⑤思路:
not in + group by + count(1)
其他:
也可以用 not exists + group by + count(1)

力扣-进店却未进行过交易的顾客相关推荐

  1. LeetCode MySQL 1581. 进店却未进行过交易的顾客

    1. 题目 表:Visits +-------------+---------+ | Column Name | Type | +-------------+---------+ | visit_id ...

  2. 力扣学习记录(每日更新)

    文章目录 引言 简单 力扣:1 两数之和 力扣:20 有效的括号 力扣:21 合并两个有序链表 力扣:22 括号生成 力扣:27 移除元素 力扣: 35 搜索插入位置 力扣:70 [爬楼梯](http ...

  3. 力扣sql入门篇(五)

    力扣sql入门篇(五) 1 组合两个表 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 SELECT firstname,lastname,IFNULL( ...

  4. 力扣刷题-专项突破-SQL入门

    选择 595.大的国家 (简单) World 表: +-------------+---------+ | Column Name | Type | +-------------+---------+ ...

  5. 《LeetCode力扣练习》剑指 Offer 15. 二进制中1的个数 Java

    <LeetCode力扣练习>剑指 Offer 15. 二进制中1的个数 Java 一.资源 题目: 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ...

  6. leetcode c++未初始化_LeetCode 力扣官方题解 | 538. 把二叉搜索树转换为累加树

    力扣 538. 把二叉搜索树转换为累加树(点击查看题目) 力扣​leetcode-cn.com 题目描述 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater ...

  7. 力扣LeetCode-哈希表

    哈希表 一.基本知识点 1. 定义 哈希表是根据关键码的值而直接进行访问的数据结构. 2. 解决问题 快速判断一个元素是否出现集合里. 3. 哈希碰撞解决方法 拉链法与线性探测法. 4. 常见的三种哈 ...

  8. 力扣刷题记录-回溯算法相关题目

    首先介绍一下回溯算法 回溯通常在递归函数中体现,本质也是一种暴力的搜索方法,但可以解决一些用for循环暴力解决不了的问题,其应用有: 1.组合问题: 例:1 2 3 4这些数中找出组合为2的组合,有1 ...

  9. 力扣编程题-解法汇总

    一.力扣链接: 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 备注:以后每个工作日从前往后刷一道题,然后再加一道每日新题.每天两道题. 二.模版: 标题: 力扣解法汇总5-正则表达 ...

最新文章

  1. Codeforces 1246D/1225F Tree Factory (构造)
  2. Linux getcwd()的实现【转】
  3. 项目管理最佳实践方法_项目管理:控制项目进度最佳实践
  4. 上科大、腾讯提出Liquid Warping GAN,实现人体动作迁移的新高度!
  5. 应届生毕业第一份工资多少?
  6. 目标检测算法——小目标检测相关数据集(附下载链接)
  7. GIS实验之制作地形地貌图
  8. Python 获取本周、上周、下周周一、周天的日期
  9. 微笑哥,工作快乐感与快乐企业文化
  10. SMTP:mail、sendmail、mailx、postfix等邮件服务总结
  11. 学python千万别想当然
  12. 《西邮XUPT-ACM学子的文字》
  13. 埃尔米特曲线 Hermite Curve
  14. linux批量删除文件或者文件夹
  15. 利用eda函数对文本数据进行增强
  16. 跟同事杠上了,Apache Beanutils为什么被禁止使用?
  17. 关键词提取算法TextRank
  18. Delegate.Combine
  19. htc incredible s手机无限重启
  20. 黑苹果 【 I7 8700K z370 1060 和 I7 7700K z270 集显 的安装记录】

热门文章

  1. OFFICE图标不正常显示的解决办法(转载)
  2. 深度学习第J6周:ResNeXt-50实战解析
  3. 2017免费发布信息平台排行大全!
  4. Mac上iPad Pro高清桌面动态壁纸
  5. 区块链打造“红娘链”,婚姻上链让爱更“牢固”
  6. 使用SDNN (space displacement neural network)进行多字体手写识别
  7. 【华为机试真题Python】工厂流水线调度
  8. 04Java异常-3. 异常处理方式之try..catch
  9. WPF 绑定继承的样式提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式
  10. 原生js实现对未来dom的事件绑定