google-bigquery - 在BigQuery SQL中使用IF

标签 google-bigquery

案例:我在BQ中有Sales表,并且item_num列包含值1,-1和0。我想计算每个值有多少个案例。

在下面尝试了一个简单的查询,但每种情况下count返回的数字都完全相同。

SELECT 
count(if(item_num > 0,1, 0)) as buysplus,
count(if(item_num < 0,1, 0)) as buysminus,
count(if(item_num = 0,1, 0)) as buyszero
from MyShop.Sales


谢谢

最佳答案

SELECT 
  SUM(IF(item_num > 0, 1, 0)) AS buysplus,
  SUM(IF(item_num < 0, 1, 0)) AS buysminus,
  SUM(IF(item_num = 0, 1, 0)) AS buyszero
FROM MyShop.Sales


甚至更详细的版本:

SELECT 
  SUM(item_num > 0) AS buysplus,
  SUM(item_num < 0) AS buysminus,
  SUM(item_num = 0) AS buyszero
FROM MyShop.Sales


这将给你这样的结果

buysplus    buysminus   buyszero     
4           2           3


另一个选择是它的转置版本

SELECT 
  item_num AS buys,
  COUNT(1) AS volume
FROM MyShop.Sales
GROUP BY 1  


结果如下

 buys        volume  
 0          3    
 1          4    
-1          2    

关于google-bigquery - 在BigQuery SQL中使用IF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35739103/

相关文章:

docker - oauth2client.client.AccessTokenRefreshError : invalid_grant Only in Docker

mysql - SQL 仅选择一项

sql - 如何将 IP 地址从 Google Analytics 过滤到 Bigquery

google-cloud-platform - 如何安排从 BigQuery 表到 Cloud Storage 的导出?

date - 谷歌大查询 : Select and group by "yyyy-mm" from date field ("yyyy-mm-dd") or timestamp

google-bigquery - 阻止查询 --destination_table 命令的输出

java - 使用默认服务帐户的 Bigquery 插入作业

java - 如何以最佳方式使用 Apache Beam 和 BigQueryIO 从多个 BigQuery 表中检索数据?

google-analytics - 无法在 BigQuery 中访问 Google Analytics(分析)的示例数据集

google-analytics - GA BigQuery导出-COUNT(DISTINCT(fullVisitorId)),带有源/媒介超额计数