【SQL刷题系列】:leetcode183 Customers Who Never Order

(点击上方蓝色,快速关注)

SQL刷题系列:SQL作为一种数据库查询和程序设计语言,是从事数据技术人员必备的技能,也是各大公司的数据分析、数据挖掘、数据库等笔试题必考的一种题。所以,不论大家是转行还是学习都少不了这一关。为此,Python数据科学开启了SQL刷题的系列,希望可以帮助有需要的朋友们。 题目来源:本篇内容为Leetcode上SQL题库183 难易程度:简单

▌刷题回顾

【SQL刷题系列】:leetcode178 Rank Scores

▌题目描述

Suppose that a website contains two tables, the Customers table and the Orders table. Write a SQL query to find all customers who never order anything.

假设一个网站包含两个表: Customers和Orders。写出一个SQL查询语句找出所有没有任何订单的顾客。

Customers表:

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Joe   |
| 2  | Henry |
| 3  | Sam   |
| 4  | Max   |
+----+-------+

Orders表:

+----+------------+
| Id | CustomerId |
+----+------------+
| 1  | 3          |
| 2  | 1          |
+----+------------+

使用上面两个表,你的查询结果应该与下面这样相同。

+-----------+
| Customers |
+-----------+
| Henry     |
| Max       |
+-----------+

▌参考答案

参考1:

select Name as Customers from Customers
where Id not in (select distinct CustomerId from Orders);

参考2:

select name AS Customers
from Customers LEFT JOIN Orders 
ON Customers.Id=Orders.CustomerId 
WHERE Orders.CustomerId IS NULL;

▌答案解析

参考1:通过查询select的嵌套使用。先在Orders表中返回所有有订单的客户Id,然后在Customer查询不在Orders表中的客户Id,最后返回相应的用户名字,即为最终结果。当然,也可以使用join通过连接两个表来实现

参考2:将Customers表的Id与Orders表的CustomerId建立左连接,那么Orders原本缺少的信息就会自动用NULL来代替。然后用where查询是NULL的用户名字即可。

原文发布于微信公众号 - Python数据科学(Python_Spiderman)

原文发表时间:2018-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贾老师の博客

敏感词过滤

35330
来自专栏技术博客

一步一步学Linq to sql(四):查询句法

9610
来自专栏猿人谷

【性能提升神器】Covering Indexes

可能有小伙伴会问,Covering Indexes到底是什么神器呢?它又是如何来提升性能的呢?接下来我会用最通俗易懂的语言来进行介绍,毕竟不是每个程序猿都要像D...

7110
来自专栏杨建荣的学习笔记

一条"简单"的sql语句和小兔子买面包的故事 (r3笔记第25天)

有时候开发人员写sql语句的时候,接触的性能问题越多,可能对sql语句的结构,性能考虑会多一些,这也是一件好事,不过如果考虑不当,本来原本想做的的一些优化却使得...

28250
来自专栏码神联盟

碎片化 | 第四阶段-50-hibernate之Criteria和NavtiveSQL查询操作-视频

如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/i0568gnxikp.html ---- ---- 版权声明:本视频、...

35860
来自专栏阮一峰的网络日志

RFC2119:表示要求的动词

RFC(Request For Comments)指的关于互联网标准的正式文件,它们的内容必须写得非常清楚。 表达的时候,必须严格区分哪些是"建议"(sugge...

30370
来自专栏杨建荣的学习笔记

简单对比MySQL和Oracle中的一个sql解析细节 (r5笔记第40天)

SQL的语法解析器是一个很强大的内置工具集,里面会涉及到很多的编译原理的相关知识,语法分析,词法分析。。一大堆看起来很理论的东东,不过看起来枯燥之余,它们的价值...

36280
来自专栏杨建荣的学习笔记

MySQL死锁的两个小案例

最近花了些时间分析MySQL锁的内容,觉得越看越有意思。 我有个学习的习惯,有时候也不知道好还是不好,那就是喜欢直接上手练习,然后反过来练习理论。结果在...

37570
来自专栏生信技能树

没有自己的服务器如何学习生物数据分析(下篇)

编者注:在上篇文章《没有自己的服务器如何学习生物数据分析》上篇,我们对 IBM 云计算平台有了基本了解,也学习了如何对数据进行下载上传以及基本的预处理。 在《没...

39870
来自专栏杨建荣的学习笔记

使用sql语句分析双色球(85天)

这个题目看似有点无厘头,老写技术博客,也来干点“正事",用sql语句分析一下近十年来的双色球情况,不过我肯定算不出来开奖结果,纯属个人娱乐, 个人觉得概率让一切...

35860

扫码关注云+社区

领取腾讯云代金券