MySQLで1980年〜1996年生まれのユーザーの割合(パーセンテージ)を求める方法
MySQLでは、SUM()関数とCOUNT()関数を組み合わせることで、特定の条件に該当するレコードの割合(パーセンテージ)を簡単に算出できます。この記事では、生年月日が1980年から1996年の間であるユーザーの割合を求める方法を、具体的なサンプルとともに分かりやすく解説します。
サンプルテーブルの作成
まず、デモ用のテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> DateOfBirth varchar(100)
-> );
Query OK, 0 rows affected (0.55 sec)
データの挿入
次に、INSERTコマンドを使用してテーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable values('2019/01/31');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('1980/02/01');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values('1985/04/10');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('1995/06/04');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable values('1990/12/24');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('1996/11/04');
Query OK, 1 row affected (0.19 sec)登録データの確認
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+-------------+
| DateOfBirth |
+-------------+
| 2019/01/31 |
| 1980/02/01 |
| 1985/04/10 |
| 1995/06/04 |
| 1990/12/24 |
| 1996/11/04 |
+-------------+
6 rows in set (0.00 sec)
1980年〜1996年生まれのユーザー割合を求めるクエリ
以下が、生年月日が1980年1月1日から1996年12月31日の範囲に含まれるユーザーの割合を算出するクエリです。
mysql> SELECT Sum(DateOfBirth BETWEEN '1980/01/01' AND '1996/12/31') * 100 / Count(*) as Percentage from DemoTable;
出力結果
+------------+
| Percentage |
+------------+
| 83.3333 |
+------------+
1 row in set (0.00 sec)
クエリの仕組み
MySQLでは、BETWEENによる条件式は、条件が真の場合に1、偽の場合に0を返します。SUM()はこれらの値を合計するため、結果として「条件に該当したレコード数」が得られます。この値に100を掛け、全体のレコード数COUNT(*)で割ることで、該当ユーザーの割合をパーセンテージとして計算できるのです。
今回の例では、全6件のうち5件(1980/02/01、1985/04/10、1995/06/04、1990/12/24、1996/11/04)が条件に該当するため、約83.33%という結果が得られました。
-
MySQLで日付レコードと現在の日付の差分を取得する方法(DATEDIFF関数の使い方)
現在の日付が「2019-09-06」であると仮定して、テーブルに保存された日付レコードと現在の日付との差分(日数)を取得する方法を解説します。MySQLでは、DATEDIFF() 関数を使うことで、2つの日付の差を簡単に計算できます。 1. サンプルテーブルを作成する まず、日付型(DATE)のカラムを持つテーブルを作成します。 mysql> create table DemoTable ( AdmissionDate date ); Query OK, 0 rows affected (0.54 sec) 2. テーブルにレコードを挿入する INSERT文を使って、いくつかの日
-
MySQLで現在の日付とテーブル内の日付レコードの差を求める方法
現在の日付とテーブルに保存された日付レコードの差(日数)を求めるには、MySQLの DATEDIFF() 関数を使用します。この関数は、2つの日付の差を日数で返してくれる便利な関数です。ここでは、実際にテーブルを作成し、データを挿入して、現在の日付との差を計算する手順を順番に見ていきましょう。1. テーブルの作成まず、日付型のカラムを持つテーブルを作成します。mysql> create table DemoTable1446-> (-> DueDate date-> );Query OK, 0 rows affected (1.42 sec)2. レコードの挿入次に、I