MySQLで賛成票と反対票の数を数える方法
MySQLでテーブル内の賛成票(正の値)と反対票(負の値)の数をそれぞれカウントしたい場合、CASE文と集計関数SUM()を組み合わせることで簡単に実現できます。
1. サンプルテーブルを作成する
まず、投票データを格納するテーブルを作成します。
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Vote int
);
Query OK, 0 rows affected (1.70 sec)
2. テストデータを挿入する
次に、INSERTコマンドを使っていくつかのレコードを追加します。正の値と負の値を混ぜて登録します。
mysql> insert into DemoTable(Vote) values(-10); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable(Vote) values(100); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable(Vote) values(45); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable(Vote) values(-6); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable(Vote) values(-1000); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable(Vote) values(450); Query OK, 1 row affected (0.14 sec)
3. 登録したデータを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+----+-------+ | Id | Vote | +----+-------+ | 1 | -10 | | 2 | 100 | | 3 | 45 | | 4 | -6 | | 5 | -1000 | | 6 | 450 | +----+-------+ 6 rows in set (0.00 sec)
4. 賛成票と反対票をカウントするクエリ
ここが本題です。CASE文で「Vote > 0」なら1、「Vote < 0」なら1を返すように条件分岐し、それをSUM()で合計することで、正と負それぞれの件数を一度に取得できます。
mysql> select sum(case when Vote > 0 then 1 else 0 end) as Number_Of_Positive_Votes, sum(case when Vote < 0 then 1 else 0 end) as Number_Of_Negative_Votes from DemoTable;
実行結果は以下のようになります。
+--------------------------+--------------------------+ | Number_Of_Positive_Votes | Number_Of_Negative_Votes | +--------------------------+--------------------------+ | 3 | 3 | +--------------------------+--------------------------+ 1 row in set (0.00 sec)
解説
このクエリの仕組みは以下の通りです。
- sum(case when Vote > 0 then 1 else 0 end):Vote列の値が0より大きい場合に1を返し、それ以外は0を返します。これを合計することで賛成票(正の値)の総数が得られます。
- sum(case when Vote < 0 then 1 else 0 end):同様に、Vote列の値が0未満の場合に1を返すことで、反対票(負の値)の総数をカウントできます。
今回のサンプルデータでは、正の値が3件(100、45、450)、負の値が3件(-10、-6、-1000)だったため、両方とも「3」という結果になりました。
なお、COUNT()関数を使ったcount(case when Vote > 0 then 1 end)のような書き方でも同じ結果が得られます。用途に応じて使い分けるとよいでしょう。
-
C#で数値が正・負・ゼロ、奇数・偶数のいずれかを判定するプログラム
この記事では、C#を使ってある数値が正の数、負の数、ゼロ、奇数、偶数のいずれに該当するかを判定する方法を解説します。奇数・偶数の判定方法奇数か偶数かを判別するには、剰余演算子 % を使って、その数値を2で割った余りを確認します。余りが0であれば偶数、そうでなければ奇数と判定できます。// 奇数・偶数の判定 if(n % 2 == 0) { Console.WriteLine(Even); } else { Console.WriteLine(Odd); }正の数・負の数・ゼロの判定方法数値が負の数か、ゼロか、正の数かを判別するには、if-else if-else 文による条件分
-
数値が正か負かを判定するJavaプログラムの書き方
この記事では、Javaを使って入力された数値が「正の数」なのか「負の数」なのかを判定する方法を解説します。判定の考え方はシンプルで、対象の数値が0より大きいか小さいかを比較するだけで実現できます。それでは、実際の動作例を見ていきましょう。入力例ユーザーが次のように数値を入力したとします。Enter the number: -30出力例この場合、プログラムは次のような結果を出力します。The number -30 is a negative number処理のアルゴリズム正負の判定は、以下の手順で行います。Step 1 - 処理を開始する Step 2 - 整数型の変数 my_input を宣言