首页 > 解决方案 > Vertica DB 中的交叉连接和聚合

问题描述

我在 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

...

我想计算,每个位置+类别组合中有多少项目。我怎样才能做到这一点?

标签: sqlaggregate-functionsvertica

解决方案


一种可能的方法:

   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。


推荐阅读