Arrays Google BigQuery SQL:使用数组?

Arrays Google BigQuery SQL:使用数组?,arrays,count,google-bigquery,Arrays,Count,Google Bigquery,我是SQL和Google BigQuery的新手。 我试图运行以下查询以获得名称和计数的列表,但是我发现我得到了一个数组错误,不知道如何修复它。谢谢你的帮助 错误消息: 无法访问[5:27]处数组类型为的值上的字段 #standardSQL -- Applications_Per_Assignee SELECT assignee_harmonized.name AS Assignee_Name, COUNT(*) AS Number_of_Patent_Apps FROM ( SELECT AN

我是SQL和Google BigQuery的新手。 我试图运行以下查询以获得名称和计数的列表,但是我发现我得到了一个数组错误,不知道如何修复它。谢谢你的帮助

错误消息:

无法访问[5:27]处数组类型为的值上的字段

#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;

看起来您的查询有一些问题

  • assignment
    是一个字符串,我想你应该看看
    assignment\u.name
  • 您将需要
    UNNEST()
  • ANY_VALUE()
    只选择一个随机值,听起来不像您想要的值
  • 您的内部选择中有一个
    分组依据
    ,它不会提供您想要的结果
  • 这种类型的查询实际上不需要子查询

下面是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
HAVING Number_of_Patent_Apps < 1000
ORDER BY Number_of_Patent_Apps DESC
-- LIMIT 10

您好@Marko43,欢迎来到SO。您至少应该将整个错误消息与这些问题一起发布。你可以把你的问题添加进去。我刚把它添加到帖子里。谢谢你。我明白了。名字的问题。我不知道有什么价值。谢谢。UNNEST是技巧-加上纠正我所犯的其他错误。如果它解决了你的SuxMixkaIL,一个附加的问题,考虑接受答案。如果我想使用逻辑运算符来过滤计数,我会发现插入诸如WHERE count(*)<1000之类的内容是行不通的,并且会产生“聚合”错误。使用这样的数组执行此操作的诀窍是什么?
拥有大量的专利应用程序<1000
-请参阅答案中的更新
#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
HAVING Number_of_Patent_Apps < 1000
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