4 个可以简化查询的 BigQuery SQL 快捷方式

检查你的数据库是否也有它们——当你开始学习 SQL 时,最常见的建议是练习基本语句,因为它们可以跨多个数据库工作。缺点是您可能永远不会发现可以简化查询的特定于数据库的语法,因为您永远不需要阅读文档。对我来说就是这种情况……

原文标题4 BigQuery SQL Shortcuts That Can Simplify Your Queries

4 个可以简化查询的 BigQuery SQL 快捷方式

检查您的数据库是否也有它们

4 个可以简化查询的 BigQuery SQL 快捷方式

当你开始学习 SQL 时,最常见的建议是练习基本语句,因为它们可以跨多个数据库工作。缺点是您可能永远不会发现可以简化查询的特定于数据库的语法,因为您永远不需要阅读文档。在我开始使用 Google BigQuery 并阅读 SQL 语法文档并发现一些你应该知道的惊人快捷方式之前,我就是这种情况。[0]

1. EXCEPT

在 SELECT * 中使用 EXCEPT 从表中选择除您不想要的列之外的所有字段。在下面的示例中,我创建了一个名为 orders 的 CTE,并选择了除 item_id 和 item_name 之外的所有列。[0]

4 个可以简化查询的 BigQuery SQL 快捷方式

在此之前,我会通过列出除 item_id 和 item_name 之外的每一列来编写下面的 SELECT。这看起来不像是 6 列的快捷方式,但想象一下,如果您有一个 20 列的表并且您只想排除 2 个字段。您可以简单地使用 EXCEPT 排除您不想要的 2 个列,而不是在 SELECT 语句中键入 18 个列名。

4 个可以简化查询的 BigQuery SQL 快捷方式

2. PIVOT

我忘记了我从表中查询数据以放入 Excel 以使用数据透视表按不同时间段获取小计的次数。现在我可以使用 PIVOT 语句轻松完成此操作并绕过 Excel。

4 个可以简化查询的 BigQuery SQL 快捷方式

要使用上面的示例数据按季度调整销售额,您只需在 PIVOT 语句中指定季度即可。

4 个可以简化查询的 BigQuery SQL 快捷方式

或者,要按季度比较年度总销售额,您可以删除产品列并在 PIVOT 语句中指定年份。

4 个可以简化查询的 BigQuery SQL 快捷方式

3. ROLLUP

过去,我使用 Excel 数据透视表或运行多个查询来获取总计和小计,但现在我可以将 ROLLUP 与 GROUP BY 一起使用。使用上面显示的产品示例,我们可以在 GROUP BY 之后使用 ROLLUP(年、季度)按年获得总销售额和小计。 2020 年和 2021 年的总销售额为 355,由年份和季度列中的空值表示。 2020 年销售额为 199,2021 年为 156,由季度列中的空值表示。

4 个可以简化查询的 BigQuery SQL 快捷方式

4. QUALIFY

QUALIFY 允许您像在 SELECT 语句中创建的列上应用 WHERE 条件一样,因为它是在 GROUP BY、HAVING 和 WINDOW 语句之后评估的。[0]

您可以使用 QUALIFY 来获得按季度销售额最高的产品,使用排名窗口函数计算,只需使用 QUALIFY = 1。

4 个可以简化查询的 BigQuery SQL 快捷方式

不使用 QUALIFY 的传统方法是将 SQL 语句作为子查询,然后像下面一样应用 WHERE rank = 1。使用 QUALIFY 似乎要简单得多,对吧?

4 个可以简化查询的 BigQuery SQL 快捷方式

Final Thoughts

了解 SQL 基础知识固然很好,但查看文档以查看是否存在可以简化查询的特定于数据库的 SQL 语法并没有什么坏处,因为它们可能在其他数据库中可用。例如,Snowflake 也有 PIVOT、ROLLUP 和 QUALIFY。我已经强调了一些 SQL 快捷方式,但我确信我只是触及了皮毛。你还能找到多少?

注意:以上所有查询均在 BigQuery 沙盒上运行,任何拥有 Google 帐户的人都可以免费使用该沙盒。[0]

你可能还喜欢…

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
上一篇 2022年6月14日 下午3:07
下一篇 2022年6月14日 下午3:15

相关推荐

本站注重文章个人版权,不会主动收集付费或者带有商业版权的文章,如果出现侵权情况只可能是作者后期更改了版权声明,如果出现这种情况请主动联系我们,我们看到会在第一时间删除!本站专注于人工智能高质量优质文章收集,方便各位学者快速找到学习资源,本站收集的文章都会附上文章出处,如果不愿意分享到本平台,我们会第一时间删除!