web-dev-qa-db-ja.com

BigQuery SQLでIFを使用する

Case: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

ありがとう

16
Sema196
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    
19