sql - 如何在标准 SQL 中进行 PIVOT 和 COUNT

标签 sql google-bigquery

我想在标准 SQL 中对以下数据进行透视和计数(使用 Google 附加 OWOX BI 和 Big Query):

INPUT

使其以标准sql输出如下:

RESULTS

所以我想根据“原因”选择 itemsku 和枢纽。

不太明白,谢谢!!!

最佳答案

以下适用于 BigQuery 标准 SQL

#standardSQL
SELECT itemsku,
       COUNTIF(reason = 'BIG') AS big,
       COUNTIF(reason = 'NONE') AS none,
       COUNTIF(reason = 'SMALL') AS small
FROM `project.dataset.table`
GROUP BY itemsku

您可以使用问题中的虚拟数据来测试、玩上面的内容,如下所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1010101 itemsku, 'BIG' reason UNION ALL
  SELECT 1010101, 'BIG' UNION ALL
  SELECT 13333, 'NONE' UNION ALL
  SELECT 13333, 'NONE' UNION ALL
  SELECT 14444, 'NONE' UNION ALL
  SELECT 14444, 'NONE' UNION ALL
  SELECT 14444, 'SMALL' 
)
SELECT itemsku,
       COUNTIF(reason = 'BIG') AS big,
       COUNTIF(reason = 'NONE') AS none,
       COUNTIF(reason = 'SMALL') AS small
FROM `project.dataset.table`
GROUP BY itemsku
-- ORDER BY itemsku     

结果为

Row     itemsku     big     none    small    
1       13333       0       2       0    
2       14444       0       2       1    
3       1010101     2       0       0    

关于sql - 如何在标准 SQL 中进行 PIVOT 和 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51294315/

相关文章:

google-bigquery - 大查询 : query time partitioned table row counts per partition for 0 bytes (free) query

sql - psql 在结果数组中返回 'anonymous'

sql - 加入对 generate_series() 的计数查询并将 Null 值检索为 '0'

javascript - 具有挑战性 : BigQuery multiply and sum recursively

android - 是否可以将 firebase 自定义属性分析设置为数组?

apache-spark - 以有效的方式从 BigQuery 读取到 Spark?

mysql - 按两个字段分组后查找 MAX(Avg(value))

sql - Postgres : How to store bytea as value in hstore?

mysql - 在 MySQL 生日处理中避免每天使用相同的用户

google-bigquery - 如何了解我在 Google BigQuery 中使用的每月 1TB 免费配额中有多少?