MySQL Caseステートメントを使用すると、SQLクエリの複数の条件の値を確認できます。この記事では、MySQLでcaseステートメントを使用する方法を見ていきます。
MySQLでCaseステートメントを作成する方法
MySQLCaseステートメントの構文は次のとおりです。
select
case
when condition1 then value1
when condition2 then value2
...
end,
column2, column3, ...
from table_name 上記のクエリでは、テーブル名を指定する必要があります。また、case…endステートメント内で、特定の列をチェックする各条件について言及する必要があります。また、各条件が真の場合、つまり各ケースについて、列に割り当てられる値についても言及する必要があります。
MySQLケースの例
以下のMySQLケース関数の例をいくつか見てみましょう。
次のテーブルがあるとしますsales(id、order_date、amount) 。
mysql> create table sales(id int, order_date date, amount int);
mysql> insert into sales(id, order_date, amount)
values(1, '2021-01-01', 150),
(1, '2021-01-02', 250),
(1, '2021-01-03', 100),
(1, '2021-01-04', 150),
(1, '2021-01-05', 350);
mysql> select * from sales;
+------+------------+--------+
| id | order_date | amount |
+------+------------+--------+
| 1 | 2021-01-01 | 150 |
| 1 | 2021-01-02 | 250 |
| 1 | 2021-01-03 | 100 |
| 1 | 2021-01-04 | 150 |
| 1 | 2021-01-05 | 350 |
+------+------------+--------+ ボーナスリード:MySQLでJSON列をクエリする方法
金額をグループ化するSQLクエリは次のとおりです 3つのバケットへの値– 100未満、100〜300、および300を超える値。
mysql> select id, order_date,
case when amount<=100 then 'less than equal to 100'
when amount>100 and amount<300 then '101 to 300'
when amount>=300 then 'greater than 300'
end as bucket
from sales;
+------+------------+------------------------+
| id | order_date | bucket |
+------+------------+------------------------+
| 1 | 2021-01-01 | 101 to 300 |
| 1 | 2021-01-02 | 101 to 300 |
| 1 | 2021-01-03 | less than equal to 100 |
| 1 | 2021-01-04 | 101 to 300 |
| 1 | 2021-01-05 | greater than 300 |
+------+------------+------------------------+
ボーナスリード:MySQLに重複レコードを挿入しないようにする方法
値に対してcaseステートメントのいずれも満たされない場合、CASEステートメントはNULLを返すことに注意してください。これが例です
mysql> select id, order_date,
case when amount<100 then 'less than 100'
when amount>100 and amount<300 then '100 to 300'
when amount>300 then 'greater than 300'
end as bucket
from sales;
+------+------------+------------------+
| id | order_date | bucket |
+------+------------+------------------+
| 1 | 2021-01-01 | 100 to 300 |
| 1 | 2021-01-02 | 100 to 300 |
| 1 | 2021-01-03 | NULL |
| 1 | 2021-01-04 | 100 to 300 |
| 1 | 2021-01-05 | greater than 300 |
+------+------------+------------------+
上記の例では、CASEステートメントはどの条件も満たさないため、100に対してNULLを返します。
MySQL Caseステートメントは、度数分布の作成と値のグループ化に役立ちます。
WHERE条件を使用して、行のサブセットにcaseステートメントを適用することもできます。
select id, order_date,
case when amount<=100 then 'less than equal to 100'
when amount>100 and amount<300 then '101 to 300'
when amount>=300 then 'greater than 300'
end as bucket
from sales
WHERE <condition>;
UbiqのMySQLケース
Ubiq Reportingツールは、上記のすべてのSQLクエリをサポートし、さまざまな方法でSQL結果を簡単に視覚化できるようにします。これが、Ubiqでの上記のCASESQLクエリです。
MySQL用のレポートツールが必要ですか? Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日それを試してみてください!