基于星期几返回计数或空值的 Netezza SQL 语句

Posted

技术标签:

【中文标题】基于星期几返回计数或空值的 Netezza SQL 语句【英文标题】:Netezza SQL statement to return count or null based on day of week 【发布时间】:2018-05-09 20:11:37 【问题描述】:

我是 SQL 的初学者。我正在尝试确定是否有一种方法可以编写一个 SQL 语句,该语句将在一周中的某些天返回空值,并在一周中的其他天返回一个计数。我不能使用脚本(我使用的界面只允许我执行单个语句)。

逻辑是这样的:

if max(as_of_date) is a Saturday or Sunday, then return null
Else select count(*) from table where (etc).

【问题讨论】:

整个“if - else”结构只在一行内有意义(在 sql 中称为 CASE WHEN),但计数只在多行内有意义。请提供一组输入行和所需输出行的示例,我们当然可以提供帮助 谢谢。不幸的是,我正在尝试做的是使用 SQL 来实现调度软件真正应该做的事情。 【参考方案1】:

我假设 AS_OF_DATE 是源表中的一列,并且您的输出应该只有一行,如果源表中的 ONE 行包含相关日期的记录,那么它将返回非空值。请详细说明问题(所需的输入/输出会很好)

Select 
  case when cnt>0 
  then cnt 
  end 
from
  ( select count(*) cnt 
    from THE_TABLE 
    where EXTRACT(dow FROM AS_OF_DATE) not in (1,7)
  ) x

【讨论】:

想要的逻辑本质上是这样的:如果DATE_DIM表中的Max(as_of_date)是星期六或星期日,则返回null,否则返回现有SQL的结果(为单个数字--a计数)。 这个“单个数字”是否计算了与 as_of_date 列不同的表中的行数,as_of_date 是“current_date”吗? 我有点误会了这一点。实际的逻辑是从连接到 date-dim 表的不同表中获取计数。基本上从 table-a 中选择 count(*), date-dim where table-a.as-of-date = date-dim.date and date-dim.last-process-date = ‘Y’

以上是关于基于星期几返回计数或空值的 Netezza SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中提交具有空白或空值和非空白值的表单

Bigquery 用一些 000 替换空结果或空值

有没有办法避免在 Apollo GraphQL 中返回具有空值的键?

SQL:Null 列的计数不正确

SQL Server的空值处理策略

sql语句返回类型为hashmap的时候空值的字段会显示吗