[英]BigQuery - Grouping by date with a WHERE clause
我的目标是搜索某些产品,计算每种产品的总数,然后按天对每个产品进行分组。
架构是这样的:
行项目.sku | 创建时间 |
---|---|
产品1 | 2020-04-02T13:22:44 |
产品2 | 2020-04-02T05:01:22 |
产品2 | 2020-04-03T14:21:10 |
我的查询如下:
SELECT
EXTRACT(DAY
FROM
CAST(`order`.created_at AS DATETIME)) AS day_extracted,
EXTRACT(MONTH
FROM
CAST(`order`.created_at AS DATETIME)) AS month_extracted,
`order`.line_items.sku AS sku
FROM
`mydatabase`
WHERE
`order`.line_items.sku = "product 1"
OR `order`.line_items.sku = "product 2"
数据如下:
排 | day_extracted | 提取月 | 存货 |
---|---|---|---|
1个 | 5个 | 2个 | 产品1 |
2个 | 4个 | 1个 | 产品2 |
2个 | 4个 | 1个 | 产品1 |
这很好并且有效,但我遇到了需要对产品进行分组并每天计算每个产品总数的问题。
我究竟做错了什么? 如果我添加
GROUP BY month_extracted, day_extracted
对于查询,出现另一个错误
SELECT list expression references `order`.line_items which is neither grouped nor aggregated at [8:3]
第 8 行是:
`order`.line_items.sku AS sku
这意味着 group by 子句甚至不知道什么是month_extracted, day_extracted
。 因此,为了解决这个问题,要么将整个 exp EXTRACT(..
放在 Group by OR 中。使用子查询。还有一条规则,即 SELECT 中不属于 GROUP BY 的任何内容都应应用 AGGREGATE function。因此,在您那里这不是错误。
select
day_extracted,
month_extracted,
any_value(sku) AS sku -- i used any_value to fix it, you can use any other agg. function as per your logic
from (
SELECT
EXTRACT(DAY
FROM
CAST(`order`.created_at AS DATETIME)) AS day_extracted,
EXTRACT(MONTH
FROM
CAST(`order`.created_at AS DATETIME)) AS month_extracted,
`order`.line_items.sku as Sku
FROM
`mydatabase`
WHERE
`order`.line_items.sku = "product 1"
OR `order`.line_items.sku = "product 2"
) as _table
group by day_extracted,month_extracted
Mr.Batra 带我进入子查询的兔子洞,这让我找到了我的解决方案。 了解执行查询的顺序现在也更有意义了。
SELECT day_extracted,month_extracted,Sku,count(*) FROM
(
SELECT
EXTRACT(DAY
FROM
CAST(`order`.created_at AS DATETIME)) AS day_extracted,
EXTRACT(MONTH
FROM
CAST(`order`.created_at AS DATETIME)) AS month_extracted,
`order`.line_items.sku AS Sku
FROM
`mydatabase`
WHERE
`order`.line_items.sku = "product1"
OR `order`.line_items.sku = "product2"
) AS temp
GROUP BY temp.Sku,day_extracted,month_extracted
ORDER BY day_extracted
这给了我这种格式的数据:
day_extracted | 提取月 | 斯库 | col1 |
---|---|---|---|
1个 | 2个 | 产品1 | 41 |
1个 | 2个 | 产品2 | 55 |
2个 | 2个 | 产品1 | 91 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.