sql >> データベース >  >> RDS >> Mysql

mysqlの範囲でグループ化

    caseステートメントを実行するとかなり面倒になるため、範囲でグループ化する一般的なコードを次に示します。

    関数「floor」を使用して範囲の下限を検索し(ボヘミアンが使用した「ラウンド」ではない)、金額(以下の例では19)を追加して範囲の上限を検索できます。範囲の下部と上部を重ねないように注意してください!

    mysql> create table new_table (user_number int, diff int);
    Query OK, 0 rows affected (0.14 sec)
    
    mysql>  insert into new_table values (2, 0), (1, 28), (2, 32), (1, 40), (1, 53),
            (1, 59), (1, 101), (1, 105), (2, 108), (2, 129), (2, 130), (1, 144);
    Query OK, 12 rows affected (0.01 sec)
    Records: 12  Duplicates: 0  Warnings: 0
    
    mysql> select concat(21*floor(diff/21), '-', 21*floor(diff/21) + 20) as `range`,
           count(*) as `number of users` from new_table group by 1 order by diff;
    +---------+-----------------+
    | range   | number of users |
    +---------+-----------------+
    | 0-20    |               1 |
    | 21-41   |               3 |
    | 42-62   |               2 |
    | 84-104  |               1 |
    | 105-125 |               2 |
    | 126-146 |               3 |
    +---------+-----------------+
    6 rows in set (0.01 sec)
    


    1. MYSQLは特定の行のみをダンプします

    2. PythonでMySQLデータベースに接続するにはどうすればよいですか?

    3. 列を複数の行に分割する

    4. SELECT*FROM複数のテーブル。 MySQL