Vertica DB 中的交叉连接和聚合
Cross join and aggregation in 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
...
我想计算一下,每个location+category的组合有多少items。我该怎么做?
一种可能的方法:
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
想法是 LEFT JOIN 的结果将包含 crosses
table 中的所有位置和类别 - 但缺少项目的行将被 NULL
编辑。
我认为这种方法适合你
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
我在 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
...
我想计算一下,每个location+category的组合有多少items。我该怎么做?
一种可能的方法:
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
想法是 LEFT JOIN 的结果将包含 crosses
table 中的所有位置和类别 - 但缺少项目的行将被 NULL
编辑。
我认为这种方法适合你
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