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
ありがとう
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