嵌套条件聚合

时间:2020-10-29 16:33:47

标签: sql apache-spark-sql conditional-aggregation

我正在编写一个SQL查询来收集贷款数据集的摘要统计信息。我希望获得发生的第一笔非零付款和账面月额(mob)。但是,由于SQL的限制,我不能使用mob=initial_payment_mob_nz,所以我试图将表达式复制到定义initial_payment_amount_nz的case语句中。

我想知道嵌套条件聚合是否可行(以及如何相应地构建查询)。我可以创建一个单独的查询,然后加入该查询,但是鉴于我正在使用的数据集,这在计算上会非常昂贵。如果我可以保持在当前查询的约束范围内,那将是理想的选择。

预先感谢

SELECT
    primary_key,
    ..., 
    MIN(
        CASE WHEN monthly_payment_amount > 0 
        THEN mob ELSE null END)
        AS initial_payment_mob_nz,
    CASE WHEN(
        mob=MIN(
                CASE WHEN monthly_payment_amount > 0 
                THEN mob ELSE NULL END) 
            THEN monthly_payment_amount ELSE NULL END) 
        AS initial_payment_amount_nz
FROM
    table
GROUP BY 
    primary_key

0 个答案:

没有答案