云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

CDN_qq服务器_限时特惠

小七 141 0

大数据趋势_企业级_大数据是什么意思啊

博客SQL是分析师最强大的工具之一。在sqlsuperstar中,我们为您提供可操作的建议,以帮助您充分利用这种多功能语言并创建漂亮、有效的查询。一个问题,多个解决方案对于今天的每日报告,我们需要一个用户列表以及每个用户创建的最新小部件。我们有一个users表和一个widgets表,每个用户都有许多widget。用户.id是用户的主键,并且widgets.user用户名是小部件中对应的外键。为了解决这个问题,我们只需要连接第一行。有几种方法可以做到这一点。以下是一些不同的技巧以及何时使用它们。在索引外键时使用相关的子查询相关子查询是依赖于外部查询的子查询。它就像SQL中的for循环。对于外部查询中的每一行,大数据是什么概念,子查询将运行一次:如果没有索引,请使用完整的子查询当外键没有被索引时,相关的子查询会崩溃,因为每个子查询都需要一个完整的表扫描。在这种情况下,我们可以通过重写查询以使用单个子查询来加快速度,只扫描widgets表一次:从用户加入中选择*(选择distinct on(user_id)*from widgets按用户编号订购,创建于描述)作为最新的用户小部件打开用户.id=最近的用户_widget.user用户名我们使用了Postgres的DISTINCT ON语法,以便为每个用户只查询一个widget。如果您的数据库不支持DISTINCT ON之类的功能,淘客返利系统,您有两个选项:如果有有序的ID列,淘客是什么,请使用嵌套子查询在我们的示例中,最近的行总是具有最高的id值。这意味着,即使没有DISTINCT ON,我们也可以像这样使用嵌套子查询作弊:从用户加入中选择*(从小工具中选择*身份证在哪里(从widgets group by user_id中选择max(id)))作为最新的用户小部件打开用户.id=最近的用户_widget.user用户名我们首先选择代表每个用户最近的小部件的id列表。然后我们过滤主窗口小部件的ID。这将得到与DISTINCT ON相同的结果,淘客助手,因为按id排序和created_at恰好相等。我们使用了Postgres的DISTINCT ON语法,以便为每个用户只查询一个widget。如果您的数据库不支持DISTINCT ON之类的功能,大数据的趋势,您有两个选项:如果有有序的ID列,请使用嵌套子查询在我们的示例中,最近的行总是具有最高的id值。这意味着,即使没有DISTINCT ON,我们也可以像这样使用嵌套子查询作弊:从用户加入中选择*(从小工具中选择*身份证在哪里(从widgets group by user_id中选择max(id)))作为最新的用户小部件打开用户.id=最近的用户_widget.user用户名我们首先选择代表每个用户最近的小部件的id列表。然后我们将主widgets表过滤到这些id。这将得到与DISTINCT ON相同的结果,因为按id排序和created_at恰好相等。如果需要更多控制,请使用窗口函数如果您的表没有id列,或者您不能依赖于它的min或max是最近的一行,那么使用row_number和window函数。它有点复杂,但更灵活:从用户加入中选择*(选择*自(选择*,行编号()(按用户标识分区按创建顺序)作为行数从小部件)按顺序排列的\u小部件订购地点_小工具行数=1)作为最新的用户小部件打开用户.id=最近的用户_widget.user用户名订购依据用户.id有趣的是:选择*,行编号()(按用户标识分区按创建顺序)作为行数从小部件over(partition by user_id order by created_at desc)为每个用户指定一个子表,称为窗口,并按created_at desc对这些窗口进行排序。row_number()返回行在其窗口中的位置。因此,每个用户的第一个widget将具有第1行。在外部子查询中,我们只选择行数为1的行。使用类似的查询,您可以得到第2行、第3行或第10行。标签:数据团队| SQL | SQL joins | SQL Server | SQL starter kit | SQL superstar |窗口函数