web-dev-qa-db-fra.com

Utilisation de IF dans BigQuery SQL

Case: J'ai une table Sales dans BQ et la colonne item_num contient les valeurs 1, -1 et 0. Je veux compter le nombre de cases que j'ai pour chaque valeur.

J'ai essayé une simple requête ci-dessous, mais le nombre renvoie exactement le même nombre pour chaque cas. Qu'est-ce qui me manque?

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

merci

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

ou une version encore moins verbeuse:

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

cela vous donnera un résultat comme ci-dessous

buysplus    buysminus   buyszero     
4           2           3

Une autre option en serait une version transposée

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

avec le résultat ci-dessous

 buys        volume  
 0          3    
 1          4    
-1          2    
19
Mikhail Berlyant