MySQL database_data query_sort, función agregada, grupo

Base de datos MySQL

Clasificar

  • Para facilitar la visualización de los datos, puede ordenar los datos

gramática:

select * from 表名 order by 列1 asc|desc ,列2 asc|desc,...

Descripción:

  • Ordene los datos de la fila de acuerdo con la columna 1, si algunas filas y la columna 1 tienen el mismo valor, ordene de acuerdo con la columna 2, y así sucesivamente
  • De forma predeterminada, ordene de pequeño a grande por valor de columna (asc)
  • asc ordenados de pequeño a grande, es decir, ascendente
  • desc se ordena de mayor a menor, es decir, descendente

Ejemplo 1: Consultar la información de los chicos sin borrarlos, en orden descendente por ID de alumno

select * from students where gender=1 and is_delete=0 order by id desc;

Ejemplo 2: Consultar la información del alumno que no se elimina, en orden ascendente por nombre
ordenar por campo

select * from students where is_delete=0 order by name;

ordenar por varios campos

select * from students where age between 18 and 34 order by height desc,id desc;

Ejemplo 3: Mostrar toda la información del estudiante, primero ordenar por edad -> más joven, cuando la edad es la misma, ordenar por altura -> más corto

select * from students  order by age desc,height desc;

Función agregada

  • Para obtener datos estadísticos rápidamente, a menudo se utilizan las siguientes 5 funciones de agregación

total

  • count (*): cuente el número total de filas, escriba la estrella y el nombre de la columna entre paréntesis, el resultado es el mismo

Ejemplo 1: consultar el número total de alumnos

select count(*) from students;

select count(*) as 男性人数 from students where gender=0;

select count(*) as 女性人数 from students where gender=1;

Max

  • max (columna) significa encontrar el valor máximo de esta columna

Ejemplo 2: consultar el número máximo de niñas

select max(id) from students where gender=2;

Mínimo

  • min (columna) significa encontrar el valor mínimo de esta columna

Ejemplo 3: consultar el número mínimo de estudiantes no eliminados

select min(id) from students where is_delete=0;

Suma

  • suma (columna) significa encontrar la suma de esta columna

Ejemplo 4: consultar la edad total de los niños

select sum(age) from students where gender=1;

-- 平均年龄
select sum(age)/count(*) from students where gender=1;

valor promedio

  • avg (columna) significa encontrar el valor promedio de esta columna

Ejemplo 5: consultar el número medio de chicas que no se han eliminado

select avg(id) from students where is_delete=0 and gender=2;

Agrupamiento

agrupar por

  • El significado de agrupar por: agrupa los resultados de la consulta según uno o más campos, el mismo valor de campo es un grupo
  • Agrupar por se puede utilizar para agrupar un solo campo o varios campos.
select * from students;
+----+-----------+------+--------+--------+--------+-----------+
| id | name      | age  | height | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
|  1 | 小明      |   18 | 180.00 | 女     |      1 |           |
|  2 | 小月月    |   18 | 180.00 | 女     |      2 |          |
|  3 | 彭于晏    |   29 | 185.00 | 男     |      1 |           |
|  4 | 刘德华    |   59 | 175.00 | 男     |      2 |          |
|  5 | 黄蓉      |   38 | 160.00 | 女     |      1 |           |
|  6 | 凤姐      |   28 | 150.00 | 保密   |      2 |          |
|  7 | 王祖贤    |   18 | 172.00 | 女     |      1 |          |
|  8 | 周杰伦    |   36 |   NULL | 男     |      1 |           |
|  9 | 程坤      |   27 | 181.00 | 男     |      2 |           |
| 10 | 刘亦菲    |   25 | 166.00 | 女     |      2 |           |
| 11 | 金星      |   33 | 162.00 | 中性   |      3 |          |
| 12 | 静香      |   12 | 180.00 | 女     |      4 |           |
| 13 | 周杰      |   34 | 176.00 | 女     |      5 |           |
| 14 | 郭靖      |   12 | 170.00 | 男     |      4 |           |
+----+-----------+------+--------+--------+--------+-----------+


select gender from students group by gender;
+--------+
| gender |
+--------+
| 男     |
| 女     |
| 中性   |
| 保密   |
+--------+

Agrupados según el campo de género, todos los valores del campo de género tienen 4 'masculino', 'femenino', 'neutral' y 'confidencial', por lo que se dividen en 4 grupos. Cuando se usa group by solo, solo se muestra el número de cada grupo Un registro, por lo que el significado real de grupo por solo es de poca utilidad.

agrupar por + group_concat ()

  • group_concat (nombre de campo) se puede utilizar como campo de salida,
  • Después de agrupar, de acuerdo con el resultado de la agrupación, use group_concat () para colocar la colección del valor de un determinado campo en cada grupo.
select gender from students group by gender;
+--------+
| gender |
+--------+
| 男     |
| 女     |
| 中性   |
| 保密   |
+--------+


select gender,group_concat(name) from students group by gender;
+--------+-----------------------------------------------------------+
| gender | group_concat(name)                                        |
+--------+-----------------------------------------------------------+
| 男     | 彭于晏,刘德华,周杰伦,程坤,郭靖                                 |
| 女     | 小明,小月月,黄蓉,王祖贤,刘亦菲,静香,周杰                        |
| 中性   | 金星                                                       |
| 保密   | 凤姐                                                       |
+--------+-----------------------------------------------------------+


select gender,group_concat(id) from students group by gender;
+--------+------------------+
| gender | group_concat(id) |
+--------+------------------+
| 男     | 3,4,8,9,14       |
| 女     | 1,2,5,7,10,12,13 |
| 中性   | 11               |
| 保密   | 6                |
+--------+------------------+

agrupar por + función agregada

  • Inspirándonos en group_concat (), ya que podemos contar el conjunto de valores de un determinado campo de cada grupo, también podemos usar la función set para realizar algunas operaciones en este conjunto de valores
select gender,group_concat(age) from students group by gender;
+--------+----------------------+
| gender | group_concat(age)    |
+--------+----------------------+
| 男     | 29,59,36,27,12       |
| 女     | 18,18,38,18,25,12,34 |
| 中性   | 33                   |
| 保密   | 28                   |
+--------+----------------------+


分别统计性别为男/女的人年龄平均值
select gender,avg(age) from students group by gender;
+--------+----------+
| gender | avg(age) |
+--------+----------+
| 男     |  32.6000 |
| 女     |  23.2857 |
| 中性   |  33.0000 |
| 保密   |  28.0000 |
+--------+----------+

分别统计性别为男/女的人的个数
select gender,count(*) from students group by gender;
+--------+----------+
| gender | count(*) |
+--------+----------+
| 男     |        5 |
| 女     |        7 |
| 中性   |        1 |
| 保密   |        1 |
+--------+----------+

agrupar por + tener

  • tener expresión condicional: se utiliza para especificar algunas condiciones después de agrupar la consulta para generar resultados de la consulta
  • El papel de tener es el mismo que el de dónde, pero el tener solo se puede usar para el grupo por
select gender,count(*) from students group by gender having count(*)>2;
+--------+----------+
| gender | count(*) |
+--------+----------+
| 男     |        5 |
| 女     |        7 |
+--------+----------+

agrupar por + con rollup

  • La función de con rollup es agregar una nueva fila al final para registrar la suma de todos los registros en la columna actual
select gender,count(*) from students group by gender with rollup;
+--------+----------+
| gender | count(*) |
+--------+----------+
| 男     |        5 |
| 女     |        7 |
| 中性   |        1 |
| 保密   |        1 |
| NULL   |       14 |
+--------+----------+


select gender,group_concat(age) from students group by gender with rollup;
+--------+-------------------------------------------+
| gender | group_concat(age)                         |
+--------+-------------------------------------------+
| 男     | 29,59,36,27,12                            |
| 女     | 18,18,38,18,25,12,34                      |
| 中性   | 33                                        |
| 保密   | 28                                        |
| NULL   | 29,59,36,27,12,18,18,38,18,25,12,34,33,28 |
+--------+-------------------------------------------+

Supongo que te gusta

Origin blog.csdn.net/weixin_42250835/article/details/90402449
Recomendado
Clasificación