在保持社交距离的同时学习数据科学
SQL初学者
让我们复习一下SQL,把它真正刻在你的脑子里
简介
在过去的五周里,我一直在Medium上发布SQL课程。我的几个朋友表达了在保持社交距离的同时学习数据科学的兴趣,所以我觉得帮助他们会很有趣。我认为从学习SQL开始是个好主意,因为这是我希望在接受培训成为一名数据科学家时能尽早学会的一件事。
这是一个很好的起点,因为你首先需要能够访问数据,以便能够分析它。SQL也是一种非常直接和逻辑的编程语言,因此我认为它是对数据科学世界的一个很好的渐进介绍。
我希望我的课程是平易近人的,这样人们入门的门槛就会低一些。这也是为什么我把我的例子写得既有趣又有点傻的原因。在疫情肆虐的这段时期,你不能把生活看得太严肃。
以前的教训
上周我们上了最后一课,介绍了一个新的SQL概念。我们学会了如何组合表格。使用UNION和UNION ALL关键字,我们将数据集堆叠在彼此之上。此外,我们还学习了使用INNER JOIN、LEFT OUTER JOIN和RIGHT OUTER JOIN来根据匹配的值组合表。
这节课
本周是复习周。我想把我们目前所学到的关键概念都讲一遍让它们牢牢记住。我想要传达一个新概念,但它是我们在创建新表的第一课.
希望到现在为止,您已经能够更独立地处理您感兴趣的数据科学问题了。因此,在介绍了如何创建一个新表来保存所选数据之后,我将设置练习。在那之后,我将讲述我将如何去完成它们。这样你就有了一个可以参考的例子,以防你被卡住了。
主要学习
- 回顾创建表的过程
- 回顾使用SELECT和SELECT DISTINCT关键字从表中选择数据
- 使用WHERE关键字检查过滤数据
- 使用GROUP BY关键字根据列值检查分组数据
- 使用关键字MIN, MAX, COUNT, AVG和SUM检查聚合数据
- 通过使用关键字UNION和UNION ALL对数据集进行堆叠,或者基于使用关键字INNER JOIN、LEFT OUTER JOIN和RIGHT OUTER JOIN的匹配值来检查合并数据集
- 学习从选定的数据创建新表
使用所选数据创建新表
我们已经学习了如何创建一个表并在其中填充数据第一课.但是,除了写出每个单独的值之外,还有其他方法用数据填充新表。
另一种方法是从现有表中选择数据并将其存储在新表中。他们的语法非常直接。我们只需要添加一个CREATE TABLE语句,然后使用AS将从select语句返回的数据分配给我们创建的新表。你可以在下面看到如何做:
创建表name_of_new_table
作为
选择
name_column_one,
name_column_five
从
name_of_existing_table
在哪里
name_column_three =值
;
复习练习:
练习1:至少创建两个表,并用数据填充它们。数据可以由您自己选择,但是每个表应该至少有3列和5行。确保在表中包含至少3种不同的数据类型。数据可以是真实的,也可以是编造的,这取决于你。
练习2:写一个查询来过滤每个表。尝试使用不同的方法。记住,你可以使用关键字BETWEEN、LIKE、AND、OR、NOT等。
练习3:编写一个查询来对每个表进行分组和聚合。如果有必要,尝试在每个聚合器中使用不同的聚合器。
练习4:编写一个查询将两个表组合在一起,并解释为什么选择以这种方式组合它们。
练习5:写出一个你可能会对你的数据提出的问题。然后尽可能地写一个或多个问题来回答这个问题。在回答问题时,使用我们的新语法至少一次将所选数据保存到新表中。
确保你解释了为什么你这样回答你的问题。
提示:创建新表时,数据不会自动显示。然后,如果希望查看数据,则需要从创建的新表中选择数据。
我的解决方案:
的数据
对于练习,我将创建两个我自己的数据集,这将在我作为一个视觉艺术家的其他工作中派上用场。这些表格将包含我可以用来给我的艺术品定价的信息。重要的是要注意,所有的价格都是虚构的估计。主要是因为我不记得所有东西的价格了
一张表格详细列出了我使用的不同材料和我的估计价格。另一个表格将包含我的表面选项。第三张表包含了我为自己的工作时间收取多少费用的信息。
如果你有兴趣看我的作品,你可以在这里找到www.katemarielewis.com.
练习1回答:
我去了https://www.db-fiddle.com/.在左边的列我把CREATE TABLE和INSERT INTO查询。
创建表art_materials (
material_name varchar (255),
material_type varchar (255),
material_subtype varchar (255),
价格浮动
);插入art_materials (
material_name,
material_type,
material_subtype,
成本
)
值
(“金色丙烯酸漆”,“油漆”,“丙烯酸”,0.5),
('schmincke horadam watercolour paint', 'paint', 'watercolour', 0.2),
(“树脂”,“其他”,“环氧树脂”,1)
;
创建表art_surfaces (
surface_name varchar (255),
surface_type varchar (255),
surface_subtype varchar (255),
size_category varchar (255),
size_m2浮动,
cost_dollars int (255)
);插入art_surfaces (
surface_name,
surface_type,
surface_subtype,
size_category,
size_m2,
cost_dollars
)
值
('方形拉伸帆布','帆布','拉伸帆布','中号',0.36,30),
('矩形拉伸帆布','帆布','拉伸帆布','中号',0.2,25),
('矩形拉伸帆布大','帆布','拉伸帆布','大',0.35,50),
('方形拉伸帆布大','帆布','拉伸帆布','大',1,60),
('矩形帆布垫中等','帆布','帆布垫','中等',0.12,7),
('矩形水彩帆布垫中','帆布','帆布垫','中',0.12,10),
('木制艺术家面板','木制面板','木制面板','中等',0.25,40),
(“300克/平方米康森遗产100%纯棉水彩纸”,“纸”,“水彩纸”,“小”,0.09,5),
(“300克/平方米坎森罗伊磨坊100%纯棉水彩纸”,“纸”,“水彩纸”,“中等”,0.12,8)
;
创建表artist_time (
小时int (255),
价格int
);插入artist_time (
个小时,
价格
)
值
(120),
(160),
(240),
(320),
(480),
960年(24日),
(1440),
(72, 2880)
;
然后我点击了“运行”按钮。
当我从每个表中选择所有的数据时,这是我得到的:
练习2回答:
为了过滤我的表,我使用了以下查询:
选择
material_name
从
art_materials
在哪里
material_type ! =“漆”
;选择不同的
surface_subtype
从
art_surfaces
在哪里
surface_type像“%脉管”
;选择不同的
价格
从
artist_time
在哪里
6点到24点之间
;
练习3的答案:
为了分组和聚合我的表,我使用了以下查询:
选择
material_type,
AVG(成本)为“mean_material_cost”
从
art_materials
集团
material_type
;选择
size_category,
计数(surface_name)为“number_of_different_surfaces”
从
art_surfaces
集团
size_category
;选择不同的
价格/小时为“price_per_hour”
从
artist_time
;
注意:第三个表artist_time对分组没有意义,因为两列中都没有重复的值。
练习4答:
为了组合我的表,我使用了以下查询:
选择
material_name为“名称”,
material_type '类型',
material_subtype为“子类型”
从
art_materials
联盟
选择
surface_name为“名称”,
surface_type '类型',
surface_subtype为“子类型”
从
art_surfaces
;
我选择使用关键字UNION将art_materials和art_surface表组合在一起,因为它们有三个类似的列,可以相互堆叠。通过结合它们,结果显示了所有可能涉及到创作我的艺术品的不同材料成本。
练习5答:
问题:一位客户来找我,让我在一块拉伸的画布上创作一幅中等大小的丙烯画。如果我估计画一幅画要花8个小时,这幅画要花客户多少钱?
注意:我不知道客户想要什么形状的画布,所以我会取两种形状的平均成本。
下面是一个查找答案并将其存储在表中的查询:
创建表materials_cost
作为
选择
成本为“paint_cost”
从
art_materials
在哪里
material_type =“漆”
和
material_subtype =“丙烯酸”
;
创建表surface_cost
作为
选择
AVG (cost_dollars)作为“surface_cost_estimate”,
AVG (size_m2)作为“size_estimate_m2”
从
art_surfaces
在哪里
size_category = '中'
和
surface_type =“画布”
和
Surface_subtype = '拉伸画布'
;
创建表time_cost
作为
选择
价格为“artist_time_cost”
从
artist_time
在哪里
小时= 8
;选择
(选择
artist_time_cost
从
time_cost) +
(选择
surface_cost_estimate
从
surface_cost) +
(选择
paint_cost
从
materials_cost) *
(选择
size_estimate_m2 * 100
从
surface_cost))
;
注意:在最后的查询中,我在select语句中使用了几个子查询,以便能够从我创建的每个新表中选择单个数据点。
为了为客户找到正确的报价,我需要考虑使用的材料,超过中等拉伸的画布的平均面积。我还加上了拉伸帆布的平均价格。我在报价中添加的最后成本是我估计持续8小时的时间的价格。
我从每个原始数据集中创建了一个单独的过滤表,以选择最终的方程。
学习复习
完成本课后,您应该能够:
- 独立创建表
- 使用select和select DISTINCT关键字从表中选择数据
- 使用WHERE关键字过滤数据
- 使用group BY关键字根据列值对数据进行分组
- 使用关键字MIN, MAX, COUNT, AVG和SUM聚合数据
- 通过使用关键字UNION和UNION ALL对数据集进行堆叠,或者基于使用关键字INNER JOIN、LEFT OUTER JOIN和RIGHT OUTER JOIN的匹配值来组合数据集
- 从选定的数据创建一个新表
下节课
我想这次复习可能要比前几次多花点时间。本周的演习比前几周要多一些。所以下周的课更多的是理论课而不是实践课。在下一课中,我将介绍我在处理任何数据科学问题之前所考虑的一些问题。
除了数据,我的另一个爱好是绘画。你可以在这里找到我的野生动物艺术作品www.katemarielewis.com