简介SQL是数据科学专业人士军械库中的关键一环。这是一条经验法则,如果你没有学过SQL,就不能指望在分析或数据科学方面取得成功。为什么SQL如此重要?随着我们进入新的十年,我们生产和消费数据的速度与日俱增。为了根据数据做出明智的决策,世界各地的组织都在聘请数据专业人员,例如业务分析师和数据科学家,以从海量数据中挖掘信息。最重要的工具之一是SQL!结构化查询语言(SQL)已经存在了几十年。它是一种用于管理关系数据库中保存的数据的编程语言。世界上大多数大公司都在使用SQL。数据分析师可以使用SQL访问、读取、操作和分析存储在数据库中的数据,并生成有用的信息来推动明智的决策过程。在本文中,我将讨论8种SQL技术,它们可以帮助您解决任何高级数据分析问题。请记住,本文假定您对SQL有非常基本的了解。目录理解数据集SQL技巧1:计算行和项SQL技巧2:聚合函数SQL技巧3:识别极值SQL技巧4:数据切片SQL技巧5:限制数据SQL技巧6:数据排序SQL技巧7:过滤模式SQL技巧8:分组,汇总数据,和分组过滤了解数据集学习数据分析的最佳方式是什么?通过在数据集上执行它!为此,我创建了一个零售店的虚拟数据集。客户数据表由ConsumerDetails表示。我们的数据集由以下列组成:Name–客户的姓名Locality–客户所在的位置Total_amt_spend–客户在商店中花费的总金额Industry–表示客户所属的行业注:我们将使用MySQL5.7用于我们的实验。你可以从这里下载它https://dev.mysql.com/downloads/mysql/5.7.htmlSQL技术1–CountRowsandItemsCount函数我们将从最简单的查询开始,即统计行数一张桌子。我们将使用函数COUNT()来执行此操作。伟大的!现在我们知道表中的行数是10。在一个小的测试数据集上使用这个函数似乎没有用。但是,当您有数百万行时,它会有很大帮助!Distinctfunction很多时候,我们的数据表中充满了重复的值。为了获得唯一值,我们使用不同的函数。在我们的数据集中,我们如何找出客户属于哪个行业?你猜到了。我们可以通过使用DISTINCT函数来实现这一点。您甚至可以同时使用count和distinct来计算唯一行的数量。可以参考以下查询:SQL技巧2——聚合函数聚合函数是任何数据分析的基础。它们为我们提供了数据集的概览。我们将讨论的一些函数是–SUM()、AVG()和STDDEV()。SUM函数我们使用SUM()函数来计算表中数字列的总和。让我们计算每个客户的总消费:在上面的例子中,sum_all是存储总和值的变量。消费者花费的总金额为12,560卢比。AVG函数AVG()函数计算平均值。让我们找出消费者在零售店的平均消费:顾客在零售店的平均消费为1256卢比。STDDEV函数如果您查看数据集,然后查看平均消费者消费值,您会发现少了什么。平均值并不能提供完整的理解,所以让我们找到另一个重要的指标——标准差。该函数是STDDEV()。标准差为829.7,说明消费者的消费差距很大!SQL技术3–极值识别下一类分析是识别极值,这将帮助您更好地理解数据。Max函数可以使用MAX()函数来识别最大值。让我们看看如何应用它:消费者在零售店的最高消费金额为3,000卢比。Min函数类似于max函数,我们有MIN()函数来确定给定列中的最小值:零售店客户的最低消费为350卢比。SQL技巧4——数据切片现在,让我们关注数据分析中最重要的部分之一——数据切片。这部分分析将构成高级查询的基础,并帮助您根据特定条件检索数据。假设一家零售店想要从某个地方寻找客户,特别是ShaktiNagar和ShantiVihar地区。太好了,我们有3个客户!我们使用WHERE子句根据客户应居住在本地的标准筛选数据-ShaktiNagar和ShantiVihar。我在这里没有使用OR条件。相反,我使用了IN运算符,它允许我们在WHERE子句中指定多个值。我们需要找到那些居住在特定区域(ShaktiNagar和ShantiVihar)且消费超过2000卢比的客户。在我们的数据集中,只有Shantanu和Natasha满足这些条件。由于这两个条件都需要满足,因此sum条件更适合于此。让我们看另一个例子。这一次,该零售商希望召回所有消费在1,000卢比到2,000卢比之间的消费者,以获得特别的营销优惠。同样语句的另一种写法是:只有罗汉符合这个标准!伟大的!我们已经完成一半了。让我们以迄今为止获得的知识为基础。SQL技巧5——限制数据限制假设我们要查看一个由数百万条记录组成的数据表。我们不能直接使用SELECT语句,因为那样会将整个表转储到我们的屏幕上,这既麻烦又计算量大。我们可以使用Limit:上面的SQL命令帮助我们显示表的前5行。OFFSET如果只想选中第四行和第五行怎么办?我们将使用OFFSET。OFFSET将跳过指定的行数。让我们看看它是如何工作的:SQL技术6–数据排序数据排序帮助我们对数据进行观察。我们可以使用关键字ORDERby来执行排序过程。ORDERBY关键字可用于按升序或降序对数据进行排序。默认情况下,ORDERBY关键字按升序对数据进行排序。让我们看一个例子,我们根据Total_amt_spend列对数据进行升序排序:要对数据集进行降序排序,我们可以这样做:SQL技巧7–过滤模式在前面的部分中,我们学习了如何排序数据集降序排列:一个或多个条件来过滤数据。在这里,我们将学习匹配指定的模式列。为此,我们首先要了解LIKE运算符和通配符。LIKELIKE在WHERE子句中用于在列中搜索指定的模式。通配符通配符用于替换字符串中的一个或多个字符。它们与LIKE运算符一起使用。两个最常见的通配符是:%,表示0个或多个字符_,表示单个字符在我们虚构的零售数据集中,假设我们希望所有区域都以“Nagar”结尾。花点时间理解问题陈述并思考如何解决它。让我们尝试分解这个问题。我们需要所有以“Nagar”结尾的位置,并且在这个特定字符串之前可以有任意数量的字符。所以我们可以在“Nagar”之前使用“%”通配符:太棒了,我们有6个地方以这个名字结尾。请注意,我们使用LIKE运算符来执行模式匹配。接下来,我们将尝试解决另一个基于模式的问题。我们需要消费者的名字,其第二个字符在他们各自的名字中有一个“a”。同样,我建议您花一些时间来理解问题并提出解决问题的逻辑。让我们把问题分解一下。这里,第二个字符需要是“a”。第一个字符可以是任意字符,所以我们使用通配符_。在第二个字符之后,可以有任意数量的字符,因此我们将其替换为通配符“%”。最终的模式匹配看起来是这样的:我们有6个人满足这个条件。SQL技巧8–分组、汇总数据和分组过滤器我们终于找到了SQL中最强大的分析工具之一,使用GROUPBY语句对数据进行分组。此语句最有用的应用是查找分类变量的分布。这是通过使用GROUPBY语句和聚合函数(如–COUNT、SUM、AVG等)来完成的。让我们通过问题陈述更好地理解这一点。一家零售店想要找到其所属行业对应的顾客数量:我们注意到属于不同行业的顾客数量大致相同。因此,让我们改为按行业对客户进行分组,并计算出他们花了多少钱:我们可以观察到,花费最多的客户是那些属于制造业的客户。这似乎有点容易,对吧?让我们继续改变需求,让它变得更复杂。现在,零售商想要找到总销售额大于2500的行业。为了解决这个问题,我们将再次按行业数据分组,然后使用HAVING子句。HAVINGHAVING子句类似于WHERE子句,但它只用于过滤分组数据。请记住,它总是在groupby语句之后。我们只有3个类别符合条件-航空航天、国防和制造。但为了更清楚,我还将添加ORDERBY关键字以使其更直观:结束I'mgladyoudid。这些是SQL中所有数据分析查询的构建块。您还可以使用这些基础知识进行高级查询。在本文中,我使用MySQL5.7构建示例。我希望这些SQL查询可以帮助您在日常生活中分析复杂的数据。
