【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 条评论
登录 后参与评论

相关文章

来自专栏贾老师の博客

敏感词过滤

2123
来自专栏PingCAP的专栏

TiDB 助力客如云餐饮 SaaS 服务

客如云成立于 2012 年,是全球领先、 国内最大的 SaaS 系统公司。 目前面向餐饮、 零售等服务业商家, 提供软硬一体的新一代智能化前台、收银等 SaaS...

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

相差数十倍的SQL性能分析(r11笔记第98天)

今天处理开发同学提交的一个数据查询需求,看起来是一个很常规的SQL,但是有一点不同的是,他们提供了两份文件,一份是一个id列表,大概有3000多个id值,...

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

RFC2119:表示要求的动词

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

2847
来自专栏码神联盟

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

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

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

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

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

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

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

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

3508
来自专栏技术博客

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

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

MySQL死锁的两个小案例

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

3557
来自专栏文渊之博

介绍一种非常好用汇总数据的方式GROUPING SETS

介绍   对于任何人而言,用T-SQL语句来写聚会查询都是工作中重要的一环。我们大家也都很熟悉GROUP BY子句来实现聚合表达式,但是如果打算在一个结果集中包...

38211

扫码关注云+社区