如何获取客户的用户 ID 以及他们使用 AGGREGATION OR WINDOW FUNCTION 下的每个订单?
How can I get the user ID of a client and every order they made using AGGREGATION OR WINDOW FUNCTION?
所以,我有以下 table,其中包含我的客户的用户 ID 以及他们的订单时间戳和订单交付时间戳。
用户名
ORDER_TIME
DELIVERY_TIME
0033
2021-01-0112:30:14
2021-01-01 13:30:00
0011
2021-02-1216:15:51
2021-02-1217:16:51
0040
2021-02-1819:22:55
2021-02-1820:00:05
0017
2021-03-1122:11:56
2021-03-1122:57:16
0011
2021-01-0911:14:18
2021-01-0911:44:01
0040
2021-05-0609:12:13
2021-05-0610:00:10
0033
2021-04-1623:00:45
2021-04-1623:45:40
0011
2021-03-30 17:23:45
2021-03-30 17:51:51
但是,我需要查询每个下单两次或多次的客户的userid和每个订单和交货。阅读一些内容后,我发现 window 函数或聚合函数可以帮助我,但我就是不知道如何做。我需要这样的结果,并且订单时间按升序排列:
用户名
ORDER_TIME
DELIVERY_TIME
0011
2021-01-0911:14:18
2021-01-0911:44:01
2021-02-1216:15:51
2021-02-1217:16:51
2021-03-30 17:23:45
2021-03-30 17:51:51
0033
2021-01-0112:30:14
2021-01-01 13:30:00
2021-04-1623:00:45
2021-04-1623:45:40
0040
2021-02-1819:22:55
2021-02-1820:00:05
2021-05-0609:12:13
2021-05-0610:00:10
你们能帮我解决这个问题吗?
非常非常感谢!
使用以下方法
select USERID,
array_agg(struct(ORDER_TIME, DELIVERY_TIME) order by ORDER_TIME) STATS
from `project.dataset.table`
group by USERID
having count(1) > 1
order by USERID
如果应用于您问题中的示例数据 - 输出为
所以,我有以下 table,其中包含我的客户的用户 ID 以及他们的订单时间戳和订单交付时间戳。
用户名 | ORDER_TIME | DELIVERY_TIME |
---|---|---|
0033 | 2021-01-0112:30:14 | 2021-01-01 13:30:00 |
0011 | 2021-02-1216:15:51 | 2021-02-1217:16:51 |
0040 | 2021-02-1819:22:55 | 2021-02-1820:00:05 |
0017 | 2021-03-1122:11:56 | 2021-03-1122:57:16 |
0011 | 2021-01-0911:14:18 | 2021-01-0911:44:01 |
0040 | 2021-05-0609:12:13 | 2021-05-0610:00:10 |
0033 | 2021-04-1623:00:45 | 2021-04-1623:45:40 |
0011 | 2021-03-30 17:23:45 | 2021-03-30 17:51:51 |
但是,我需要查询每个下单两次或多次的客户的userid和每个订单和交货。阅读一些内容后,我发现 window 函数或聚合函数可以帮助我,但我就是不知道如何做。我需要这样的结果,并且订单时间按升序排列:
用户名 | ORDER_TIME | DELIVERY_TIME |
---|---|---|
0011 | 2021-01-0911:14:18 | 2021-01-0911:44:01 |
2021-02-1216:15:51 | 2021-02-1217:16:51 | |
2021-03-30 17:23:45 | 2021-03-30 17:51:51 | |
0033 | 2021-01-0112:30:14 | 2021-01-01 13:30:00 |
2021-04-1623:00:45 | 2021-04-1623:45:40 | |
0040 | 2021-02-1819:22:55 | 2021-02-1820:00:05 |
2021-05-0609:12:13 | 2021-05-0610:00:10 |
你们能帮我解决这个问题吗? 非常非常感谢!
使用以下方法
select USERID,
array_agg(struct(ORDER_TIME, DELIVERY_TIME) order by ORDER_TIME) STATS
from `project.dataset.table`
group by USERID
having count(1) > 1
order by USERID
如果应用于您问题中的示例数据 - 输出为