首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >零/零情况欺骗

零/零情况欺骗
EN

Database Administration用户
提问于 2021-09-06 07:23:51
回答 2查看 341关注 0票数 3

在“开始使用SQL”一书中,Thomas谈到了一种他称之为“零/空”的技巧:

有一个简单但功能强大的工具可以将不同的过滤条件应用于不同的聚合。当龙卷风存在时,我们可以在两个单独的列中创建单独的总计数:选择年份、月份、和(龙卷风=1的情况下降水的0结束)作为tornado_precipitation,和(龙卷风=0的情况下降水的其他0端)作为non_tornado_precipitation从station_data那里>= 1990按年分组,每月有效地消除龙卷风=1或龙卷风=0的条件,然后将这些条件移到SUM()函数中的情况表达式中。如果满足条件,则将沉淀值加到和中。如果没有,则添加0,没有任何效果。我们对两列都这样做,在龙卷风出现的时候和龙卷风没有出现的时候分别进行。您可以根据需要使CASE表达式具有尽可能多的条件/值对,从而使您能够使用聚合对值执行高度特殊的截取。您还可以使用此技巧来模拟交叉表和枢轴表,将聚合表示为单独的列,而不是行。这方面的一个常见示例是执行当前年度/前一年的分析,因为您可以用不同的列表示单独的年份。

作为一名新手,这种技术似乎对总结数据非常有用。我想在网上查一下这项技术,以获得更多的信息。

这本书的作者称这种技术为“零/空大小写技巧”。但是当我搜索那个词的时候,我没有得到多少结果。

问题:

这种技术是否有一个普遍接受的名称?(这将在网上搜索时产生更多的结果)

EN

回答 2

Database Administration用户

回答已采纳

发布于 2021-09-06 07:58:46

它被不同地称为:

它可以使用CASE显式编写,也可以等效地使用SQL:2003引入的FILTER语法,例如COUNT(*) FILTER (WHERE tornado = 1)。目前Postgres、HSQLDB和SQLite支持新的语法。

票数 5
EN

Database Administration用户

发布于 2021-09-06 21:05:59

Excel (可能还有其他电子表格软件)称它为“枢轴表”,因为您采用基于行的组,并在将它们放入列时将其旋转90度。

因为人们熟悉它在SQL世界中的术语。示例

注意,这不一定是最好的方法,可能还有其他技术,如条件聚合(FILTER)和窗口函数可用。(但我对甲骨文一无所知。)

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/299113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档