BigQuery标准SQL组按汇总多个列

时间:2019-03-12 16:10:37

标签: sql google-bigquery

样本数据集:

|ownerId|category|aggCategory1|aggCategory2|
--------------------------------------------
|  1    |  dog   |  animal    |   dogs     |
|  1    |  puppy |  animal    |   dogs     |
|  2    |  daisy |  flower    |   ignore   |
|  3    |  rose  |  flower    |   ignore   |
|  4    |  cat   |  animal    |   cats     |
 ...

希望创建一个分组,其中包含来自类别aggCategory1,aggCategory2的所有者的数量,例如输出:

|# of owners|summaryCategory|
-----------------------------
|    1      |     dog       |
|    1      |     puppy     |
|    1      |     daisy     |
|    1      |     rose      |
|    1      |     cat       |
|    2      |     animal    |
|    2      |     flower    |
|    1      |     dogs      |
|    2      |     ignore    |
|    1      |     cats      |

不必是这种格式,而是希望获得上述数据点。

谢谢!

1 个答案:

答案 0 :(得分:0)

SELECT COUNT(T.ownerID), T.category
FROM (
    SELECT ownerID, category
    FROM table
    UNION
    SELECT ownerID, aggCategory1
    FROM table
    UNION
    SELECT ownerID, aggCategory2
    FROM table
) AS T
GROUP BY T.category

使用GROUP BY并与您所有类别列的并集,就可以了。