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