[MySQL deve saber e saber (dez)] [Dados do grupo]

Anterior: [MySQL Must Know and Know (9)] [Resumo de dados]

++++++++++++++ Linha inicial +++++++++++++++++

1. Agrupamento de dados

Retorna o número de produtos fornecidos pelo fornecedor 1003

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

Insira a descrição da imagem aqui

Dois, crie um grupo

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

Insira a descrição da imagem aqui

Em relação às disposições de GROUP BY 1. A
cláusula GROUP BY pode conter qualquer número de colunas
. 2. Os grupos são aninhados na cláusula GROUP BY, e os dados serão resumidos no último grupo especificado. 3. A cláusula GROUP BY está
listada na frase Cada coluna de deve ser uma coluna de recuperação ou uma expressão válida
4. Exceto para instruções de cálculo agregadas, cada coluna na instrução SELECT deve ser fornecida na cláusula GROUP BY
5. Se o agrupamento tiver um valor NULL, então NULL Será devolvido como um grupo.
6. A cláusula GROUP BY deve aparecer após a cláusula WHERE e antes da cláusula ORDER BY

Três, grupo de filtro

HAVING suporta todos os operadores WHERE

As condições e opções da cláusula WHERE são aplicáveis ​​a HAVING, a sintaxe é a mesma, as palavras-chave são diferentes

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

Insira a descrição da imagem aqui

Diferença entre HAVING e WHERE

WHERE filtros antes do agrupamento de dados, HAVING filtros após o agrupamento de dados

Liste os fornecedores com mais de dois produtos com um preço de 10 ou mais

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

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

Quatro, agrupamento e classificação

Recupere o número do pedido e o preço total do pedido de pedidos cujo preço total do pedido seja maior ou 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;

Insira a descrição da imagem aqui

Classificar a produção pelo preço total do 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;

Insira a descrição da imagem aqui

Cinco, ordem da cláusula SELECT

SELECT-FROM-WHERE-GROUP BY (descrição do grupo) -HAVING (filtragem no nível do grupo) -ORDER BY-LIMIT

++++++++++++++ Linha final +++++++++++++++++

Acho que você gosta

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