sql >> Database teknologi >  >> RDS >> Mysql

gruppe efter område i mysql

Her er en generel kode til at gruppere efter område, da det bliver ret besværligt at lave en case-sætning.

Funktionen 'gulv' kan bruges til at finde bunden af ​​intervallet (ikke 'rund' som Bohemian brugt), og tilføje mængden (19 i eksemplet nedenfor) for at finde toppen af ​​intervallet. Husk ikke at overlappe bunden og toppen af ​​intervallerne!

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. 4 måder at finde rækker, der indeholder store bogstaver i PostgreSQL

  2. Sådan får du kalenderkvartal fra en dato i TSQL

  3. Hvor er ojdbc jar-filen

  4. Returner forskellen mellem to (datoer og klokkeslæt) PHP