0

ユーザーに関する統計を作成したいと思います。

年齢の間隔に基づいてグループ化し、性別に基づいて合計したいと思います。したがって、最終的には次のようなテーブルを取得します。

   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

SQL フィドル スキーマ

4

3 に答える 3