【问题标题】:WHERE clause expression references [casted timestamp to date column] which is neither grouped nor aggregated atWHERE 子句表达式引用 [casted timestamp to date column] 既不分组也不聚合
【发布时间】:2021-02-22 17:55:22
【问题描述】:

此查询应在 Failed_Record_Count 列中按 Error_Type(嵌套)和 Application(嵌套)汇总所有记录。 Total_Record_Count 列应汇总表中的所有记录(不包括未嵌套的表)。但是,在子查询中引用 a.timestamp 的错误被称为既不分组也不聚合。

我注意到,当从选择列表中删除“日期”函数时,它成功执行但没有我预期的输出。我希望它将按日期而不是时间戳分组,因此,我试图按日期而不是时间戳来总结记录。

请帮忙。

SELECT
    DATE(timestamp) AS Date,
    status AS Status,
    program_number AS P_No,
    flow AS Flow,
    e.type AS Error_Type,
    e.application AS Application,
    (
        SELECT
            COUNT(*)
        FROM
            `table` b
        WHERE
            a.status = b.status
            AND a.program_number = b.program_number
            AND a.flow = b.flow
            AND DATE(a.timestamp) = DATE(b.timestamp)
    ) AS Total_Record_Count,
    COUNT(*) AS Failed_Record_Count
FROM
    `table` a,
    UNNEST(evaluation.validation) as ev,
    UNNEST(ev.errors) as e
WHERE
    DATE(timestamp) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)
    AND CURRENT_DATE()
GROUP BY 1,2,3,4,5,6
ORDER BY 2,3,4,5,6

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    子查询在外部选择语句中不被视为聚合函数。因此,您必须将字段 7 添加到分组依据,如下所示:

    SELECT
        DATE(timestamp) AS Date,
        status AS Status,
        program_number AS P_No,
        flow AS Flow,
        e.type AS Error_Type,
        e.application AS Application,
        (
            SELECT
                COUNT(*)
            FROM
                `table` b
            WHERE
                a.status = b.status
                AND a.program_number = b.program_number
                AND a.flow = b.flow
                AND DATE(a.timestamp) = DATE(b.timestamp)
        ) AS Total_Record_Count,
        COUNT(*) AS Failed_Record_Count
    FROM
        `table` a,
        UNNEST(evaluation.validation) as ev,
        UNNEST(ev.errors) as e
    WHERE
        DATE(timestamp) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)
        AND CURRENT_DATE()
    GROUP BY 1,2,3,4,5,6,7
    ORDER BY 2,3,4,5,6
    

    【讨论】:

      猜你喜欢
      • 2017-04-09
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多