Google bigquery 我在大查询中运行多个查询,但在正确和结构化的输出中遇到问题
我运行查询并获得答案编号中的输出。如果我分部分运行查询,它将返回3行,这是正确的Google bigquery 我在大查询中运行多个查询,但在正确和结构化的输出中遇到问题,google-bigquery,Google Bigquery,我运行查询并获得答案编号中的输出。如果我分部分运行查询,它将返回3行,这是正确的 WITH query AS ( SELECT opt.answerNo AS ans, task.taskRaised.raisedAt.milliSeconds AS time FROM Test_2019_02_07 CROSS JOIN UNNEST(task.workflowInfo.answers) AS answer CR
WITH query AS
(
SELECT
opt.answerNo AS ans,
task.taskRaised.raisedAt.milliSeconds AS time
FROM
Test_2019_02_07
CROSS JOIN
UNNEST(task.workflowInfo.answers) AS answer
CROSS JOIN
UNNEST(answer.options) AS opt
),
raw AS
(
SELECT
COUNTIF(query.ans = 1 AND query.time BETWEEN 1550341800000 AND 1550341899999) AS ans1
FROM
query
UNION ALL
SELECT
COUNTIF(query.ans = 2 AND query.time BETWEEN 1550341800000 AND 1550341899999) AS ans1
FROM
query
UNION ALL
SELECT
COUNTIF(query.ans = 3 AND query.time BETWEEN 1550341800000 AND 1550341899999) AS ans1
FROM
query
),
raw1 AS
(
SELECT
COUNTIF(query.ans = 1 AND query.time BETWEEN 1548959400000 AND 1550341899999) AS ans2
FROM
query
UNION ALL
SELECT
COUNTIF(query.ans = 2 AND query.time BETWEEN 1548959400000 AND 1550341899999) AS ans2
FROM
query
UNION ALL
SELECT
COUNTIF(query.ans = 3 AND query.time BETWEEN 1548959400000 AND 1550341899999) AS ans2
FROM
query
),
raw3 AS
(
SELECT
COUNTIF(query.ans = 1 AND query.time BETWEEN 1548959400000 AND 1550514699999) AS ans3
FROM
query
UNION ALL
SELECT
COUNTIF(query.ans = 2 AND query.time BETWEEN 1548959400000 AND 1550514699999) AS ans3
FROM
query
UNION ALL
SELECT
COUNTIF(query.ans = 3 AND query.time BETWEEN 1548959400000 AND 1550514699999) AS ans3
FROM
query
)
SELECT *
FROM raw, raw1, raw3
当我跑的时候
SELECT * FROM raw
SELECT *
FROM raw, raw1, raw3
它会回来的
0
0
0
跑步时
SELECT * FROM raw1
返回
1
1
3
3
1
1
跑步
SELECT * FROM raw3
返回
1
1
3
3
1
1
但是当我跑的时候
SELECT * FROM raw
SELECT *
FROM raw, raw1, raw3
它将返回27行重复的数字
我想
ans1 ans2 ans3
-------------------
0 1 3
0 1 1
0 3 1
就这样,我不明白为什么它会返回我27行
当我运行这个
SELECT *
FROM raw, raw1, raw3
默认情况下,如果我们在select查询中添加更多表,就可以了 在您的情况下,为了获得预期的输出,我们需要使用联接。因为我们没有任何公共列,所以可以向所有select查询添加
ROW\u NUMBER()
,并与该列联接
示例:
with
query1 as (select (ROW_NUMBER() OVER ()) as rn1, id as id1 from table1),
query2 as (select (ROW_NUMBER() OVER ()) as rn2, id as id2 from table2)
select * from query1 join query2 on query1.rn1=query2.rn2