【问题标题】:Cross join and aggregation in Vertica DBVertica DB 中的交叉连接和聚合
【发布时间】:2018-07-19 12:30:58
【问题描述】:

我在 Vertica 数据库中有两个表

1) 所有现有位置和类别的交叉连接

location_1 category_1

location_1 category_2

...

location_2 category_1

location_2 category_2

...

location_n category_n-1

location_n category_n

2) 位置和类别已知的项目列表:

item_1 location_1 category_4

item_2 location_8 category_3

...

我想计算一下,每个位置+类别组合中有多少项目。我该怎么做?

【问题讨论】:

    标签: sql aggregate-functions vertica


    【解决方案1】:

    一种可能的方法:

       SELECT c.location, c.category, COUNT(i.item)
         FROM crosses c
    LEFT JOIN items i
           ON i.location = c.location AND i.category = c.category
     GROUP BY c.location, c.category
    

    SQLFiddle.

    这个想法是 LEFT JOIN 的结果将包含 crosses 表中的所有位置和类别 - 但缺失项目的行将是 NULL-ed。

    【讨论】:

      【解决方案2】:

      我认为这种方法对你有用

          select Cross_j.location,Cross_j.category,count(item) from items
      inner join
          (
          SELECT e.location,e.category FROM crosses as e CROSS JOIN crosses as w
          ) Cross_j
          on Cross_j.location=items.location and Cross_j.category=items.category
          group by Cross_j.location,Cross_j.category
      

      【讨论】:

        猜你喜欢
        • 2018-01-15
        • 1970-01-01
        • 1970-01-01
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-14
        • 2013-09-04
        相关资源
        最近更新 更多