SQL是数据分析师和数据科学家工具箱中的关键工具。根据经验,如果还没有掌握SQL,就不能期望在分析或数据科学领域取得成功的职业生涯。随着进入新的十年,产生和消费数据的速度每天都在飙升。为了基于数据做出明智的决策,全球的组织都在雇佣像商业分析师和数据科学家这样的数据专业人员来挖掘和发现数据宝库中的洞察力。而完成这项工作最重要的工具之一就是——SQL!
结构化查询语言(SQL)已经存在了几十年。它是一种用于管理关系数据库中数据的编程语言。SQL被全球大多数大公司使用。数据分析师可以使用SQL访问、读取、操纵和分析存储在数据库中的数据,并生成有用的洞察力来推动知情的决策过程。
本文将讨论8种SQL技术/查询,这些技术将使准备好应对任何高级数据分析问题。请记住,本文假设对SQL有非常基础的了解。如果是SQL和/或商业分析的新手,建议查看以下课程:
学习数据分析的最佳方式是通过在数据集上并行执行它!为此,创建了一个零售店的虚拟数据集。客户数据表由ConsumerDetails表示。数据集包括以下列:
注意:- 将在本文中使用MySQL 5.7。可以从这里下载它 - MySQL 5.7下载。
将从最简单的查询开始,即计算表中的行数。通过使用COUNT()函数来实现这一点。现在知道表中的行数是10。在小型测试数据集上使用这个函数可能看起来很有趣,但当行数达到数百万时,它可以帮助很多!
SELECT COUNT(*) FROM ConsumerDetails;
很多时候,数据表充满了重复值。为了获得唯一值,使用DISTINCT函数。在数据集中,如何找到客户所属的独特行业?猜对了。可以通过使用DISTINCT函数来实现。
SELECT DISTINCT Industry FROM ConsumerDetails;
甚至可以通过使用COUNT和DISTINCT来计算唯一行数。
SELECT COUNT(DISTINCT Industry) FROM ConsumerDetails;
聚合函数是任何数据分析的基础。它们为提供了数据集的概览。将讨论的一些函数包括SUM()、AVG()和STDDEV()。
SELECT SUM(Total_amt_spend) AS sum_all FROM ConsumerDetails;
在上述示例中,sum_all是存储总和值的变量。消费者花费的金额总和为12,560卢比。
SELECT AVG(Total_amt_spend) AS avg_spend FROM ConsumerDetails;
零售店消费者的平均消费金额为1256卢比。
SELECT STDDEV(Total_amt_spend) AS stddev_spend FROM ConsumerDetails;
标准差为829.7,这意味着消费者支出之间存在很大的差异!
接下来的分析类型是识别极端值,这将帮助更好地理解数据。
SELECT MAX(Total_amt_spend) AS max_spend FROM ConsumerDetails;
零售店消费者花费的最大金额为3000卢比。
SELECT MIN(Total_amt_spend) AS min_spend FROM ConsumerDetails;
与max函数类似,有MIN()函数来识别给定列中的最小数值:零售店消费者花费的最低金额为350卢比。
现在,让关注数据分析中最重要的部分之一——切片数据。这部分分析将为高级查询奠定基础,并帮助根据某种条件检索数据。
SELECT * FROM ConsumerDetails WHERE Locality IN ('Shakti Nagar', 'Shanti Vihar');
有3个客户!使用了WHERE子句来根据条件过滤数据,即消费者应该居住在地区——Shakti Nagar和Shanti Vihar。没有在这里使用OR条件。相反,使用了IN操作符,它允许在WHERE子句中指定多个值。
假设想要查看包含数百万条记录的数据表。不能直接使用SELECT语句,因为这会将整个表倾倒到屏幕上,这既麻烦又计算密集。相反,可以使用LIMIT子句:
SELECT * FROM ConsumerDetails LIMIT 5;
上述SQL命令帮助显示表的前5行。
SELECT * FROM ConsumerDetails LIMIT 2 OFFSET 3;
如果想只选择第四行和第五行,将使用OFFSET子句。OFFSET子句将跳过指定数量的行。让看看它是如何工作的:
排序数据有助于把数据放在正确的视角。可以通过使用ORDER BY关键字来执行排序过程。
SELECT * FROM ConsumerDetails ORDER BY Total_amt_spend ASC;
很棒!要将数据集按Total_amt_spend列降序排序,可以按照以下命令进行:
SELECT * FROM ConsumerDetails ORDER BY Total_amt_spend DESC;
在前面的部分中,学习了如何根据一个或多个条件过滤数据。在这里,将学习过滤匹配指定模式的列。为了继续进行,首先了解LIKE操作符和通配符。
SELECT * FROM ConsumerDetails WHERE Locality LIKE '%Nagar';
在虚拟零售数据集中,假设想要所有以“Nagar”结尾的地区。花点时间理解问题陈述,并思考如何解决这个问题。
SELECT * FROM ConsumerDetails WHERE Name LIKE '_a%';
有6个人满足这个奇怪的条件!
SELECT Industry, COUNT(*) AS num_customers FROM ConsumerDetails GROUP BY Industry;
SELECT Industry, SUM(Total_amt_spend) AS total_sum FROM ConsumerDetails GROUP BY Industry HAVING total_sum > 2500 ORDER BY total_sum DESC;