[MySQL debe conocer y conocer (diez)] [Datos de grupo]

Anterior: [MySQL debe saber y saber (9)] [Resumen de datos]

++++++++++++++ Línea de inicio ++++++++++++++++

1. Agrupación de datos

Devuelve el número de productos proporcionados por el proveedor 1003

mysql> SELECT COUNT(*) AS num_prods
    -> FROM products
    -> WHERE vend_id =1003;

Inserte la descripción de la imagen aquí

Dos, crea un grupo

mysql> SELECT vend_id, COUNT(*) AS num_prods
    -> FROM products
    -> GROUP BY vend_id;

Inserte la descripción de la imagen aquí

Con respecto a las disposiciones de GROUP BY 1. La
cláusula GROUP BY puede contener cualquier número de columnas
. 2. Los grupos están anidados en la cláusula GROUP BY, y los datos se resumirán en el último grupo especificado. 3. La cláusula GROUP BY se
enumera en la oración Cada columna de debe ser una columna de recuperación o una expresión válida
4. A excepción de las declaraciones de cálculo agregadas, cada columna de la declaración SELECT debe incluirse en la cláusula GROUP BY
5. Si la agrupación tiene un valor NULL, entonces NULL Serán devueltos como grupo.
6. La cláusula GROUP BY debe aparecer después de la cláusula WHERE y antes de la cláusula ORDER BY

Tres, grupo de filtros

HAVING admite todos los operadores DONDE

Las condiciones y opciones de la cláusula WHERE son aplicables a HAVING, la sintaxis es la misma, las palabras clave son diferentes

mysql> SELECT cust_id, COUNT(*) AS orders
    -> FROM orders
    -> GROUP BY cust_id
    -> HAVING COUNT(*) >= 2;

Inserte la descripción de la imagen aquí

Diferencia entre TENER y DONDE

DONDE filtros antes de la agrupación de datos, TENIENDO filtros después de la agrupación de datos

Lista de proveedores con más de dos productos con un precio de 10 o más

mysql> SELECT vend_id, COUNT(*) AS num_prods
    -> FROM products
    -> WHERE prod_price >= 10
    -> GROUP BY vend_id
    -> HAVING COUNT(*) >= 2;

Inserte la descripción de la imagen aquí

mysql> SELECT vend_id,COUNT(*) AS num_prods
    -> FROM products
    -> GROUP BY vend_id
    -> HAVING COUNT(*) >= 2;

Inserte la descripción de la imagen aquí

Cuatro, agrupación y clasificación

Recupere el número de pedido y el precio total del pedido de los pedidos cuyo precio total del pedido sea mayor o igual a 50

mysql> SELECT order_num, SUM(quantity*item_price) AS ordertotal
    -> FROM orderitems
    -> GROUP BY order_num
    -> HAVING SUM(quantity*item_price) >= 50;

Inserte la descripción de la imagen aquí

Ordenar la producción por precio total del pedido

mysql> SELECT order_num, SUM(quantity*item_price) AS ordertotal
    -> FROM orderitems
    -> GROUP BY order_num
    -> HAVING SUM(quantity*item_price) >= 50
    -> ORDER BY ordertotal;

Inserte la descripción de la imagen aquí

Cinco, orden de cláusula SELECT

SELECT-FROM-WHERE-GROUP BY (descripción de grupo) -HAVING (filtrado de nivel de grupo) -ORDER BY-LIMIT

+++++++++++++ Línea final ++++++++++++++++

Supongo que te gusta

Origin blog.csdn.net/qq_42893334/article/details/108794901
Recomendado
Clasificación