ユーザーに関する統計を作成したいと思います。
年齢の間隔に基づいてグループ化し、性別に基づいて合計したいと思います。したがって、最終的には次のようなテーブルを取得します。
age | male | female | total
0-18 | 2 | 1 | 3
18-25 | 3 | 4 | 7
25-100 | 13 | 25 | 38
total | 18 | 30 | 48
(ところで、これらは間隔の例です)
現在、すべての行に対してこのクエリを実行してこれを行います。
SELECT
SUM(IF(gender = 'male', 1,0)) AS `male`,
SUM(IF(gender = 'female', 1,0)) AS `female`,
COUNT(gender) AS `total`
FROM `users`
WHERE
`birthday`
BETWEEN
DATE_SUB(CURDATE(), INTERVAL 25 YEAR)
AND
DATE_SUB(CURDATE(), INTERVAL 18 YEAR)
私のphpスクリプトで結果を合計して、最後の合計行を作成します
これらすべてのクエリを組み合わせてパフォーマンスを向上させ、mysql を介して最後の合計行を作成するにはどうすればよいでしょうか。
使用したい間隔は次のとおりです。
0-18
18-25
25-31
31-36
36-41
41-46
46-51
51-56
56-61
61-100
編集:これは、テストするためのサンプルデータを含むテーブルのダンプですhttp://pastebin.com/ytcuu2ge