2

我有一个查询,它产生如下所示的结果:

session_id 国家 供应商 ID page_name qty_visits
123 一种 美国广播公司 1
123 一种 美国广播公司 店铺 4
456 b 美国广播公司 78
456 b xyz 9
456 b xyz 大车 6

我想嵌套这个表,以便page_nameqty_vistisstruct调用的page_visits. 基本上,我的最终结果应该是一个包含三行(由session_idcountry和标识vendor_id)的表,第四列称为page_visits它本身是一个有两列的结构,每一列都是一个数组。所述列之一具有访问过的所有页面的列表,另一列具有访问过的次数。像这样

session_id 国家 供应商 ID page_visits.page_name page_visits.qty_visits
123 一种 美国广播公司 1
店铺 4
456 b 美国广播公司 78
456 b xyz 9
大车 6

作为检查,结果select count(*) from final_table应该是 3,而不是 5(这是没有嵌套的结果)。

4

1 回答 1

2

使用array_agg

select
  session_id,
  country,
  vendor_id,
  array_agg(struct(page_name, qty_visits)) as page_visits
from mytable
group by session_id, country, vendor_id
于 2021-06-01T17:42:28.773 回答