【问题标题】:Netezza aggregation issue (pivot)Netezza 聚合问题(枢轴)
【发布时间】:2011-10-21 21:17:34
【问题描述】:

我正在使用 Netezza 生成报告,我有以下查询

select  b.group_name,a.group_id, PASS_FAIL, COUNT(*) from log a
join group b on a.group_id=b.group_id
group by b.group_name,a.group_id, PASS_FAIL

它在一个表格中收集有关通过和失败次数的信息,如下所示:

    GROUP_NAME  GROUP_ID    PASS_FAIL   COUNT
    GROUP1        4            FAIL     382
    GROUP1        4            PASS     339

如何更改查询,以便可以使用 PASS 和 FAIL 作为列。

GROUP_NAME  GROUP_ID      PASS      FAIL
GROUP1        4           339       382

Pivot 在 Netezza 中不可用,所以我想知道最好的方法是什么。最好的方法是什么?

【问题讨论】:

    标签: sql netezza


    【解决方案1】:

    我对 netezza 没有直接经验,但据我所知,它支持 SUM/CASE 的标准 SQL 解决方案

    SELECT 
        GROUP_NAME,
        GROUP_ID,
        SUM(CASE WHEN PASS_FAIL = 'PASS' THEN 1 ELSE 0 END) as PASS,
        SUM(CASE WHEN PASS_FAIL = 'FAIL' THEN 1 ELSE 0 END) as FAIL
    FROM 
        log a
        join group b 
        on a.group_id=b.group_id
    GROUP BY 
        b.group_name,
        a.group_id
    

    【讨论】:

    • 完美。显然我试图让它变得比它需要的更复杂。
    【解决方案2】:

    只需对上述查询的修改版本进行自联接,每个版本都会生成您需要的 passfail 列之一(请注意,我没有对此进行测试,因为我没有可使用的 Netezza 安装):

    select group_name,group_id,pass,fail
    from(
        select group_name,group_id,pass
        from(
            select  b.group_name,a.group_id, COUNT(*) as pass
            from log a
            join group b on a.group_id=b.group_id
            where pass_fail='PASS'
            group by b.group_name,a.group_id
            )x
        )p
    join(
        select group_name,group_id,fail
        from(
            select  b.group_name,a.group_id, COUNT(*) as fail
            from log a
            join group b on a.group_id=b.group_id
            where pass_fail='FAIL'
            group by b.group_name,a.group_id
            )y
        )f
    on(p.group_name=f.group_name and p.group_id=f.group_id);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多