以下是我在蜂巢中的数据:
客户
id | name
---+-------
1 | n1
2 | n2
订单
oid | cid | amt
----+-----+----
1 | 1 | 10
2 | 1 | 20
3 | 1 | 30
4 | 2 | 10
我想得到这样的东西:
cid,avg(amt),oid1,oid2,oid3 ......等
换句话说,我希望每行custid
,平均值和所有与cid
相关联的订单ID排成一行。
我想出了类似的东西:
select c.id,avg(o.amt),.... from customers c join orders o on c.id = o.cid;
可以请一些人填写如何实现这一点。
答案 0 :(得分:1)
每个订单ID都有一个列很难(我假设每个客户的订单数量会有不同的数量),但您可以将它们收集到一个数组并使其成为自己的列。此外,您说您想要custid
,avg_amt
和所有订单;由于这不包括name
,因此您不需要加入customers
到orders
。
<强>查询强>
select cid
,AVG(amt) as avg_amt
,collect_list(oid) as orders_array
from customers
group by cid;
<强>输出强>
1 20 [1,2,3]
2 10 [4]