代码之家  ›  专栏  ›  技术社区  ›  T Amin

Vertica-是否可以与Group by联合?

  •  1
  • T Amin  · 技术社区  · 7 年前

    我有两张这样的桌子:

    怒族

    i j
    1 2
    1 3
    1 4
    

    内华达州

    i j
    2 1
    2 5
    3 1
    3 6
    

    我想做的是我需要找到:

    从Nu UNION选择j(从Nv选择j)为每个不同的(Nu.i,Nv.i)

    Nu.i Nv.i v
    1     2   2 
    1     2   3
    1     2   4
    1     2   1
    1     2   5
    1     3   2
    1     3   3
    1     3   4
    1     3   1
    1     3   6
    

    我可以用Vertica SQL查询吗?

    我试过:

    Select 
        Nu.i, 
        Nv.i,
        (Select j from Nu UNION Select j from Nv group by Nv.j) as v
    from Nu, Nv;
    

    ERROR 4840: Subquery used as an expression returned more than one row
    

    Select 
        Nu.i,
        Nv.i, 
        (Select j from Nu UNION Select j from Nv) as v
    from Nu, Nv 
    group by Nu.i, Nv.i;
    

    错误:

    如果子查询 不是该组的一部分

    请告诉我你的建议。

    1 回复  |  直到 7 年前
        1
  •  0
  •   marcothesane    7 年前

    您的结果表在某种程度上出乎我的意料-我无法理解您希望如何生成它的规则。

    WITH                                                                                                                                           
    Nu (i,j) AS (
              SELECT 1,2
    UNION ALL SELECT 1,3
    UNION ALL SELECT 1,4
    )
    ,
    Nv(i,j) AS (
              SELECT 2,1
    UNION ALL SELECT 2,5
    UNION ALL SELECT 3,1
    UNION ALL SELECT 3,6
    )
    SELECT
      Nu.i AS "Nu.i"
    , Nv.i AS "Nv.i"
    , Nu.j AS "Nu.j"
    , Nv.j AS "Nv.j"
    FROM Nu CROSS JOIN Nv;
    -- out  Nu.i | Nv.i | Nu.j | Nv.j 
    -- out ------+------+------+------
    -- out     1 |    2 |    2 |    1
    -- out     1 |    2 |    3 |    1
    -- out     1 |    2 |    4 |    1
    -- out     1 |    2 |    2 |    5
    -- out     1 |    2 |    3 |    5
    -- out     1 |    2 |    4 |    5
    -- out     1 |    3 |    2 |    1
    -- out     1 |    3 |    3 |    1
    -- out     1 |    3 |    4 |    1
    -- out     1 |    3 |    2 |    6
    -- out     1 |    3 |    3 |    6
    -- out     1 |    3 |    4 |    6
    -- out (12 rows)
    -- out 
    -- out Time: First fetch (12 rows): 14.037 ms. All rows formatted: 14.086 ms
    

    但是,看到这个结果表,你能自己算出剩下的吗?

    推荐文章