Anterior: [MySQL debe saber y saber (9)] [Resumen de datos]
++++++++++++++ Línea de inicio ++++++++++++++++
Directorio de artículos
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;
Dos, crea un grupo
mysql> SELECT vend_id, COUNT(*) AS num_prods
-> FROM products
-> GROUP BY vend_id;
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;
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;
mysql> SELECT vend_id,COUNT(*) AS num_prods
-> FROM products
-> GROUP BY vend_id
-> HAVING COUNT(*) >= 2;
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;
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;
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 ++++++++++++++++