考虑以下查询(标准语法):
WITH
v AS (
SELECT
_TABLE_SUFFIX AS y,
*
FROM
`bigquery-public-data.noaa_gsod.gsod*`
WHERE
_TABLE_SUFFIX > '2000' )
SELECT
y,
COUNT(1) c
FROM
v
WHERE
y IN ('2016',
'2017')
GROUP BY
y
我原以为它会返回两行:
2016 4292866
2017 3683760
但是,仅返回第一个。我觉得很奇怪。这有什么理由吗?
如果从子查询中删除WHERE _TABLE_SUFFIX > '2000'
,则会按预期返回这两行。此外,如果从底部的列表中删除2016
,则会正确返回2017
的单行。
这是预期的行为吗?
答案 0 :(得分:0)
可以通过将_table_suffix
转换为整数来解决问题
积分转到Przemek Iwańczak。
WITH
v AS (
SELECT
_TABLE_SUFFIX AS y,
*
FROM
`bigquery-public-data.noaa_gsod.gsod*`
WHERE CAST(_TABLE_SUFFIX as INT64) > 2000
)
SELECT
y,
COUNT(1) c
FROM
v
WHERE
y IN ('2016',
'2017')
GROUP BY
y