初学数据科学常犯的三个SQL错误

May 20, 2021 by Zhang in  Blog

在之前的文章中,我们曾经讨论过一些帮助你提升数据分析工作能力的SQL技巧。今天,我想换一个角度,讨论一下初学数据科学常犯的3个SQL错误。

要先了解这些错误,才能有效避免,才能写出性能最高的SQL查询语句,这对每个数据科学家/分析师至关重要。

提到SQL错误,主要有两种类型。第一种类型称为语法错误 (Syntax Errors),顾名思义,是指SQL语句不符合编程规则。SQL平台会显示存在错误,并停止运行程序。对于语法错误,我们无法通过谷歌搜索或Stack Overflow来解决!

另一类错误是逻辑错误 (Logic Errors),这是最难发现的。虽然代码看起来正确,并且可以成功运行,但是它在做错误的事。今天这篇文章要讲的也就是SQL中的逻辑错误,它们不会触发任何错误消息,但会让你的分析结果严重脱离预期目标。

我们会使用以下玩具相关的数据表来进行示范:

具有多种数据类型的玩具数据集

这是来自一个网站的数据集,用于追踪用户的登录信息。它包含用户ID、用户名、登录日期和登录位置,然后按照时间顺序对于每一个用户排序。出于演示目的,所有代码都会在MS SQL Server 2017中实现。

错误#1:误用IN来匹配多个条件

IN可用于检查一个特定的值是否与列表中的任何值匹配。它是多个OR条件的精简版本。尽管简单明了,但有时IN会被误用于实际为AND条件的问题。

我们的第一个任务是找到既在NYC又在Illinois登陆过的用户。一些分析师会立即写下以下查询语句:

输出结果:

IN的输出

这个结果是不对的,因为我们不应该看到ID 0180 /User DEF,该用户仅在NYC登陆过一次,并没有在伊利诺伊州登录过。

如何避免这个错误?

实际上,仅使用IN来简化这个问题是不对的,因为这个问题的条件逻辑是AND(即NYC登录和 Illinois登录名)而不是OR。可以采取以下措施解决这个错误:

首先,用一个计数器(即使用SUM,每经过一行,SUM递增1)来单独检查每个条件;然后,选择出两个计数器都大于0的情况。这样,我们就能够实现AND的条件逻辑,确保得到既在NYC又在Illinois登陆过的用户:

使用基于条件逻辑AND的计数器的输出

错误#2:OR和AND逻辑使用不当

当要使用多个OR和AND时,缺少逻辑顺序会改变应有的结果。让我们看一下下面这个查询语句:

我们的任务是获得(1)在NYC发生;并且(2)在2018年发生或者总的Num_Var≥1000的用户登录。下面是输出结果:

为什么这里会有一条Illinois的登陆记录(它违反了第一个条件,在NYC发生)?这是因为它符合Num_Var≥1000!

OR和AND的使用是要讲究顺序的;因此,上面的WHERE子句实际上标识了(1)在NYC并且在2018年发生;或者(2)总的Num_Var≥1000的所有用户登录。这显然不是我们的任务要求的。

如何避免这个错误?

我们可以用括号来修正这个错误:

这样就对了:

错误#3:无法考虑NULL值

最后,我们来探讨一下单个用户的案例,例如ID 0155 /User ABC。我们要计算这个用户的California登录和非-California登录:

查询结果:

用=和<>得到的输出结果

同样,结果有些奇怪——California登录次数和非-California登录次数加起来与总登录次数并不相等!在检查原始数据表时,我们注意到ID 0155缺少一个值(编码为NULL)

如何避免这个错误?

将NULL与实际值进行比较将返回缺失的值,缺失的值既不是= ‘California’也不是<> ‘California’。因此,我们还需要一个CASE WHEN:

结果符合预期:

使用CASE WHEN NULL得到的输出结果

结论

在数据分析工作中,避免出现上述3种SQL错误,才能写出更可靠、更有效的代码。希望这篇文章对你有用。感谢你的阅读!

原文作者:Yi Li
翻译作者:Haoran Qiu
美工编辑:过儿
校对审稿:Jiawei Tong
原文链接:https://towardsdatascience.com/3-common-sql-errors-to-spot-an-inexperienced-data-scientist-310b3e98842f

2021 H-1B再引争议

Aug 02, 2021

在培养专业人才方面,美国的移民政策是否已经过时?是否置国家于不利地位?联邦政府是否需要收紧政策来确保美国现今的就业机会呢?关于这些问题,争议不断,从未停止。

2021你该知道的11大机器学习算法

Feb 02, 2021

随着你对机器学习了解的增加,新出现的机器学习算法的数量也在同时增加,本文将为你介绍11种数据科学界常见的机器学习算法。

北美疫情家庭办公物品采购大数据

May 29, 2020

美国的就地庇护令为那些准备好为家庭办公的劳动力提供服务的企业创造了机会。

由于美国大部分地区都有现成的避难所来扭转和控制Covid19的蔓延,许多工作人员被要求在工作允许的情况下在家工作。在Survey Monkey,我们对这种转变如何影响不同的行业很感兴趣,因此我们与Second Measure合作,将消费者的交易数据与调查见解相结合,对数据进行更深入的研究。

Leave a Comment

Your email address will not be published. Required fields are marked *

Comment *