簡體   English   中英

BigQuery 跨表計算數組中的每個項目

[英]BigQuery count each item in array across table

我找不到我要找的東西,所以這里是:

我正在尋找一種方法來計算項目在整個表中的數組中出現的次數。

想象一下,您有一個表 child_names 有兩列 - user_id 和 children

  • 我知道有兩個同名的孩子很不尋常,但請耐心等待

.

user_id   children
1          Bob, Jane, Bob 
2          Jeff, Jane
3          Bob, Matt
4          Jane, John

我正在尋找一個有兩列的結果

Bob      3
Jane     3
Jeff     1
Matt     1
John     1

到目前為止我有這個

SELECT
  ARRAY(
    SELECT AS STRUCT child, `count`
    FROM t.children child
    
    LEFT JOIN (
      SELECT AS STRUCT child, COUNT(1) `count`
      FROM t.children child
      GROUP BY child
      
    ) stats
    USING(child) 
  ) hashtag
FROM `child_names` t,
UNNEST(children)

但這讓我計算出每個父母有多少孩子有這個名字,而不是每張桌子。

我明白了

Bob    2
Jane   1
Jeff   1
Jane   1
Bob    1
Matt   1
etc.

我希望這是有道理的。 任何幫助,將不勝感激。

下面使用

SELECT name, COUNT(*) cnt
FROM child_names, 
UNNEST(children) name
GROUP BY name       

如果應用於您問題中的示例數據 - output 是

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM