【发布时间】:2019-10-17 00:37:26
【问题描述】:
我正在尝试设置数据检查,我们从表中获取今天和之前日期的行数。由于周末或节假日不加载,我不能说 DATE-1。
我想出了以下方法,以获取上一个日期:
SELECT
LOAD_DATE
,COUNT(LOAD_DATE) RW_COUNT
,ROW_NUMBER() OVER (ORDER BY LOAD_DATE ) AS LOAD_ROWNUM
FROM DATABASE1.TABLE1
WHERE LOAD_DATE >= DATE-6
GROUP BY 1
这会产生日期、计数并分配行号。
LOAD_DATE RW_COUNT LOAD_ROWNUM
2019-10-16 8259 1
2019-10-15 8253 2
2019-10-11 8256 3
2019-10-10 8243 4
我将获取两个最新的日期并进行比较。大多数电流将是“当前”,第二大电流将是“之前”。然后我想有这样的结果集:
CURRENT_COUNT PRIOR_COUNT DIFF_PERCENT
8259 8253 .9927
我的问题是,如何引用前两行并将它们相互比较?除非我想太多,否则我需要两个额外的 SELECT 语句:1 个 WHERE 子句引用第 1 行,另一个 WHERE 子句引用第 2 行。
我该怎么做?我有两个 CTE 吗?
最终,我需要第三个 SELECT 来划分两行并检查 10% 的容差。求助,我的分析瘫痪了。
【问题讨论】:
-
样本数据和期望的结果会有所帮助。
-
不清楚你真正想要做什么,但你可以把查询的输出扔到一个易变的表中。然后你可以做一个自我加入,或者使用滞后。