关注“数据科学应用研院”,回复“礼包”
领取“大数据与建模资料合集”
如何大幅增加可以轻松处理的数据量?如何增加可以解决的难题?我刚刚意识到,机器学习最主要部分是数据。
这太重要了,我花了更多时间探索数据。数据是机器学习中最重要的部分。如果我没有数据,那么机器学习就帮不上忙。
在机器学习的开始之前,你需要学习有关 SQL 工具的所有基础知识,可以创造性地处理数据,了解数据库结构,并且知道如何访问信息。甚至可以做一些简单的聚合。
然而,真正能够解决面临的任何问题需要学习的东西很少,这将需要息的路上深耕下去。
在这篇文章中,我们将分享如何从另一个查询的结果中进行查询。目的是为了能够在查询中构建更多转换,更轻松地组织工作,甚至使查询运行得更快!
子查询也称为内部查询或嵌套查询,它是一种用于在多个步骤中执行操作的工具。该工具将使我们能够回答更复杂的问题。
现在我们使用子查询来进入更复杂的查询TermuxPostgres终端工作区执行我们的SQL。如果你还没有在编辑器中编写代码,那么是时候开始了。
在termux工作流程中,有两个会话正在运行,一个用subquery.sql扩展名打开vim文件,我可以编辑查询,然后复制粘贴查询以进行评估。在第二个Termux会话中运行postgre。
Termux和Vim是很棒的工具,开发人员和工程师都可以利用他们的手机来做一些很酷的事情,比如你正在阅读的关于 SQL 数据分析的系列文章。
Kiwanda不是一家真正的公司,为了本文,我们已经捏造了它和所有数据。我们将使用 Kiwanda 回答的问题旨在模拟现实世界的问题,要设置你的环境。
让我们戴上营销经理的帽子,如果我们想知道哪个渠道平均每天向 Kiwanda 发送最多的流量,这很棘手,因为为了做到这一点,我们必须按渠道汇总事件,然后我们需要采取这些并平均它们。
让我们分解这个例子,
首先,我们从查询下划线表开始,以确保数据对我们正在尝试做的事情有意义。

接下来我们将每天统计每个频道中的所有事件。


注意:我正在使用vim编写、编辑、复制和粘贴到postgreSQL 。该文件保存为subquery.sql,这就是为什么我的vim突出显示了我的SQL代码。
最后一步是我们想要平均我们创建的事件列,为了做到这一点,我们想要查询这个查询的结果。
我们可以通过将我们的查询包装在括号中并在我们编写的下一个查询的 FROM 子句中使用它来做到这一点。正如你现在所看到的,它是查询中的查询,也就是子查询!


子查询需要有别名,添加在括号后的方式与向表添加别名的方式相同。这里我们只是从子查询中选择所有数据。
因为子查询就像 FROM 子句中的一个表一样,我们将在子查询之后放置一个 GROUP BY 子句。


由于我们现在基于这个新的聚合重新排序,我们不再需要子查询中的 ORDER BY 语句,所以让我们把它去掉以保持干净。


为了让我们清楚这里的实际情况,让我们分解一下这个新查询的运行方式。首先将运行你的内部查询,这听起来很简单,但这很重要!
内部查询实际上必须自己运行,因为数据库会将其视为独立查询。内部查询完成后,查询的其余部分(也称为外部查询)将在内部查询创建的结果集上运行。
某些 SQL 编辑器实际上允许你突出显示和运行内部查询,并在运行外部查询之前进行一些编辑。当你想编辑内部查询时,这非常有用,在再次运行外部查询之前快速查看其输出是否正确。这是一个很好的做法,因为它节省了资源。
子查询可以在查询中的多个位置使用,它们实际上可以用于你可能使用表名甚至列名或单个值的任何地方。
它们在与 WHERE 或 JOIN 子句结合的条件逻辑中或在 CASE 语句的 WHEN 部分中特别有用。编写子查询可以显着增加可以解决的问题类型以及可以在 SQL 中轻松处理的数据量。
本文转载来自:https://medium.com/@imbugad/how-do-i-substantially-increase-the-volume-of-data-i-can-comfortably-work-with-306bbdaa83c9







