ユーザー向けのオンライン調査があり、ユーザーが調査に回答するたびに、次のような「survey_stats」テーブルに詳細をキャプチャします-
| id | user_id | survey_id | key | value |
|---------|---------|-----------|--------------|---------|
| 1 | 10 | 99 | gender | male |
| 2 | 10 | 99 | age | 32 |
| 3 | 10 | 99 | relationship | married |
| 4 | 11 | 99 | gender | female |
| 5 | 11 | 99 | age | 27 |
| 6 | 11 | 99 | relationship | single |
つまり、ユーザーが調査に回答すると、ユーザーの属性 (性別、年齢、関係) を 3 つの行 (ユーザーに関する個別の属性ごとに各行) で取得します。この方法を維持している理由は、将来ユーザー属性を拡張したい場合、survey_stats テーブル構造を変更する代わりに、調査ごとにレコードを追加するだけでよいためです。
次のようなレポートを生成する SQL を作成したいと思います。
| age_group | male | female |
|-----------|-------|---------|
| 13 - 17 | 10 | 7 |
| 18 - 24 | 25 | 10 |
| 25 - 34 | 30 | 11 |
そのための単一の SQL ステートメントを作成する方法を教えていただければ幸いです。
参考までに - 私は MySQL を使用しています。上記のプロジェクトは Ruby on Rails アプリです。
どうもありがとう。