【发布时间】:2022-02-23 05:41:28
【问题描述】:
我在 GBQ 中有一个表格,格式如下:
UserId Orders Month
XDT 23 1
XDT 0 4
FKR 3 6
GHR 23 4
... ... ...
显示每个用户和每个月的订单数。
我想计算有订单的用户百分比,我做了如下:
SELECT
HasOrders,
ROUND(COUNT(*) * 100 / CAST( SUM(COUNT(*)) OVER () AS float64), 2) Parts
FROM (
SELECT
*,
CASE WHEN Orders = 0 THEN 0 ELSE 1 END AS HasOrders
FROM `Table` )
GROUP BY
HasOrders
ORDER BY
Parts
它给了我以下结果:
HasOrders Parts
0 35
1 65
我需要按月计算有订单的用户百分比,每个月 = 100%
目前为此我每月执行一次查询,这是不切实际的:
SELECT
HasOrders,
ROUND(COUNT(*) * 100 / CAST( SUM(COUNT(*)) OVER () AS float64), 2) Parts
FROM (
SELECT
*,
CASE WHEN Orders = 0 THEN 0 ELSE 1 END AS HasOrders
FROM `Table` )
WHERE Month = 1
GROUP BY
HasOrders
ORDER BY
Parts
有没有办法执行一次查询并得到这个结果?
HasOrders Parts Month
0 25 1
1 75 1
0 45 2
1 55 2
... ... ...
【问题讨论】:
标签: sql group-by google-bigquery