mysql - Google Bigquery 查询记录数据 - 专利
问题描述
我正在使用Google Patents Public Dataset提取有关使用 CPC 代码“A01N”保存人体或动物或植物或其部分的农药的专利信息
但是,当我运行以下查询时,我并没有像运行非嵌套查询一样获得所有结果。见下文
SELECT patents.country_code, count(DISTINCT publication_number) as quantity
FROM
`patents-public-data.patents.publications` AS patents,
UNNEST(title_localized) AS title,
UNNEST(abstract_localized) AS abstract,
UNNEST(cpc) AS cpc_code,
UNNEST(inventor_harmonized) AS inventor,
UNNEST(assignee_harmonized) AS assignee
WHERE
cpc_code.code LIKE '%A01N%'
GROUP BY patents.country_code
ORDER BY quantity DESC
排 | 国家代码 | 数量 |
---|---|---|
1 | 我们 | 67280 |
2 | 中国 | 59067 |
3 | WO | 39560 |
4 | EP | 37886 |
5 | 加州 | 23115 |
SELECT patents.country_code, count(DISTINCT publication_number) as quantity
FROM
`patents-public-data.patents.publications` AS patents,
UNNEST(cpc) AS cpc_code
WHERE
cpc_code.code LIKE '%A01N%'
GROUP BY country_code
ORDER BY quantity DESC
排 | 国家代码 | 数量 |
---|---|---|
1 | 我们 | 77056 |
2 | 中国 | 70654 |
3 | EP | 60291 |
4 | WO | 39624 |
5 | J.P | 36135 |
我不明白为什么两个结果之间存在差异,因为没有应用更多过滤器?
当我 UNNEST 更多列时,如何维护所有行?
解决方案
您正在输入的列中的某些行UNNEST
是空数组。当您执行 implicitCROSS JOIN
时,您加入的 aNULL
不会给您任何结果,因此其中一些行会消失并且您的计数会减少。如果你开始注释掉其中的一些,CROSS JOIN
你会看到你的计数开始上升。由于您实际上并未使用这些列,因此您应该将它们从查询中删除。如果您稍后想要它们,请先获取计数,然后再获取LEFT JOIN
类似1=1
.
推荐阅读
- python - 如何在bgzf中间写一行或一个块
- javascript - 如何使用javascript更改html元素的图像源
- asp.net-core - 如何使用自定义服务在 ASP.NET Core 3.1 中注册身份验证提供程序?
- sql - Oracle SQL alter table add column with current user name
- python - 两个日期之间的差异并以每小时分钟数显示结果
- php - “无法将图像数据写入路径” - Laravel 图像干预
- python-3.x - 使用 pandas 组合包含 NaN 和 int 值的所有连续行中的行值
- angular - 无法加载 Angular 生产构建 - 由于不允许的 MIME 类型(“text/html”),加载模块被阻止
- node.js - 为nodejs中的任何端点为每个用户运行一次函数
- java - 为什么会发生这种情况(Processing 和 UnfoldingMaps 的奇怪之处)