如何在不手动列出查询中所有值的情况下使用SQL创建分发表?

时间:2019-03-19 05:32:05

标签: sql google-bigquery

我需要制作一个类似于以下的表格,该表格可以让我分配单个客户ID所下的订单数量

no_of_orders  count_of_customer_id
1             537
2             845
3             193
4             80
...           ...

该如何在不手动打印查询中的no_of_orders(1、2、3、4、5 ...)的情况下做到这一点,正如我所希望的那样,会有每天产生数百个订单的异常值。我将为此使用BigQuery。

我要查询的daily_order表具有列 order_payment (现金,信用等),服务类型(A,B,C等),< strong> customer_id (每个客户的唯一价值)和 order_time (例如,UTC时间2018-04-06 15:06:26)。看起来像这样:

order payment  service_type  customer_id  order_time
CASH           A             58128        2018-04-06 15:06:26 UTC
CREDIT         B             58256        2018-04-06 15:08:34 UTC

1 个答案:

答案 0 :(得分:2)

首先,通过将customer_id分组,使用选择查询来检索每个客户的no_of_order,然后使用另一个查询将每个计数分组。

select no_of_orders, count(*) as count_of_customer_id 
  from(
    select count(*) as no_of_orders 
      from daily_order 
      group by customer_id
  ) 
  group by no_of_orders 
  order by no_of_orders;