我是SQL和Google BigQuery的新手。我正在尝试运行以下查询来获取名称和计数列表,但是我发现我遇到了数组错误,并且不知道如何解决。任何帮助表示赞赏。
错误消息:
无法访问[5:27]处类型为ARRAY的值的协调字段
#standardSQL
-- Applications_Per_Assignee
SELECT assignee_harmonized.name AS Assignee_Name, COUNT(*) AS Number_of_Patent_Apps
FROM (
SELECT ANY_VALUE(assignee.harmonized.name) AS Assignee_Name
FROM `patents-public-data.patents.publications` AS patentsdb
GROUP BY Number_of_Patent_Apps
)
GROUP BY assignee_harmonized.name
ORDER BY Number_of_Patent_Apps DESC;
好像您的查询中有些问题。
assignee
是一个字符串,我想您想看看assignee_harmonized.name
UNNEST()
assignee_harmonized
ANY_VALUE()
仅选择一个随机值,听起来不像您想要的]GROUP BY
,这不会给您想要的结果#standardSQL
SELECT ah.name AS Assignee_Name, COUNT(*) AS Number_of_Patent_Apps
FROM `patents-public-data.patents.publications` AS patentsdb
LEFT JOIN UNNEST(assignee_harmonized) ah
GROUP BY 1
ORDER BY 2 DESC
下面是BigQuery标准SQL的内容>>
#standardSQL SELECT ah.name AS Assignee_Name, COUNT(*) AS Number_of_Patent_Apps FROM `patents-public-data.patents.publications`, UNNEST(assignee_harmonized) ah GROUP BY Assignee_Name ORDER BY Number_of_Patent_Apps DESC -- LIMIT 10
有输出
Row Assignee_Name Number_of_Patent_Apps
1 SAMSUNG ELECTRONICS CO LTD 600678
2 CANON KK 579731
3 MATSUSHITA ELECTRIC IND CO LTD 560644
4 HITACHI LTD 531286
5 SIEMENS AG 486276
6 MITSUBISHI ELECTRIC CORP 461673
7 IBM 438822
8 SONY CORP 438039
9 FUJITSU LTD 384270
10 NEC CORP 357193