使用旧版SQL

时间:2018-06-15 13:02:17

标签: sql google-bigquery

我使用以下SQL查询来提取由RowDate分组的表(table1)中的行数:

SELECT RowDate AS Date,

Count(RowDate) as NumberRows FROM [project:dataset.table1] GROUP BY Date ORDER BY Date

这给了我一张表格,显示:

Row Date    NumberRows   
1   2017-01-01  54   
2   2017-01-02  57   
3   2017-01-03  46   
4   2017-01-04  32   
5   2017-01-05  28

是否可以在此查询中包含我的数据集中的多个表(或者甚至更好地在项目级别),以显示每个RowDate(所有表中的公共列)的行数的单独列?

如果是这样,可以在不在查询中明确命名表的情况下完成吗?

非常感谢任何帮助。

谢谢。

2 个答案:

答案 0 :(得分:2)

使用标准SQL ,您可以执行以下操作:

SELECT RowDate AS Date,
select row_date, sum(t1_rows) as t1_rows, sum(t2_rows) as t2_rows, . . .
from ((select rowdate, count(*) as t1_rows, 0 as t2_rows, . . .
       from table1
       group by row_date
      ) union all
      (select rowdate, 0, count(*), . . .
       from table2
       group by row_date
      ) union all
      . . . 
     ) t
group by rowdate
order by rowdate;

答案 1 :(得分:1)

如果由于某种原因您仍然使用BigQuery Legacy SQL - 您应该使用TABLE_QUERY() - 请参阅下面的示例

#legacySQL
SELECT 
  RowDate,
  COUNT(1) AS NumberRows 
FROM TABLE_QUERY([project:dataset], 'true')
GROUP BY RowDate 
ORDER BY RowDate   

同时,请查看 - Wildcard Tables - BigQuery标准SQL的功能 - 以及Migrating to Standard SQL