Resumo: neste tutorial, irá aprender a usar o MySQL GROUP BY
para agrupar linhas em subgrupos com base em valores de colunas ou expressões.
Introduction to MySQL GROUP BY clause
The GROUP BY
clause groups a set of rows into a set of summary rows by values of columns or expressions. A cláusula GROUP BY
devolve uma linha para cada grupo. Em outras palavras, reduz o número de linhas no conjunto de resultados.,
Você costuma usar o GROUP BY
cláusula com funções de agregação, tais como SUM
AVG
MAX
MIN
e COUNT
. A função agregada que aparece na cláusula SELECT
fornece informações sobre cada grupo.
The GROUP BY
clause is an optional clause of theSELECT
statement., O seguinte ilustra o GROUP BY
cláusula sintaxe:
GROUP BY
cláusula deve aparecer após o FROM
e WHERE
cláusulas. Seguindo o id
palavras-chave é uma lista de colunas ou expressões separadas por vírgulas que você deseja usar como critério para agrupar linhas.,
MySQL evaluates the GROUP BY
clause after the FROM
, WHERE
and SELECT
clauses and before the HAVING
, ORDER BY
and LIMIT
clauses:
MySQL GROUP BY examples
Let’s take some example of using the GROUP BY
clause.,
A) Simple MySQL GROUP BY example
Let’s take a look at the orders
table in the sample database.,
Suponha que você deseja agrupar valores do status da ordem em subgrupos, você pode usar o GROUP BY
cláusula com o status
coluna como a consulta a seguir:
Code language: SQL (Structured Query Language) (sql)
Experimentá-Lo
Como você pode ver, GROUP BY
cláusula retorna únicas ocorrências de status
valores., Ele funciona como o DISTINCT
operador, conforme mostrado na seguinte consulta:
Code language: SQL (Structured Query Language) (sql)
Experimentá-Lo
B) Usando o MySQL GRUPO com funções de agregação
As funções de agregação permitem-lhe efectuar o cálculo de um conjunto de linhas e retornar um único valor. A cláusula GROUP BY
é frequentemente usada com uma função agregada para realizar cálculos e retornar um único valor para cada subgrupo.,
Por exemplo, se você deseja saber o número de ordens em cada status, você pode usar o COUNT
função GROUP BY
cláusula da seguinte forma:
Code language: SQL (Structured Query Language) (sql)
Experimentá-Lo
Veja o seguinte orders
e orderdetails
tabela.,
Para obter a quantidade total de todos os pedidos por status, você junte-se a orders
tabela com orderdetails
tabela e usar o SUM
função para calcular a quantia total. Consulte a consulta a seguir:
Code language: SQL (Structured Query Language) (sql)
Experimentá-Lo
da mesma forma, a consulta a seguir retorna os números de ordem e a quantidade total de cada encomenda.,
Code language: SQL (Structured Query Language) (sql)
Experimentá-Lo
C) GRUPO MySQL com expressão de exemplo
além de colunas, você pode agrupar linhas de expressões. A consulta a seguir recebe o total de vendas para cada ano.
Experimentá-Lo
neste exemplo, usamos o YEAR
função para extrair dados do ano a partir da data do pedido ( orderDate
)., Incluímos apenas encomendas com shipped
status no total de vendas. Note – se que a expressão que aparece na cláusula SELECT
deve ser a mesma da cláusula GROUP BY
.
D) Usando o MySQL GRUPO com a cláusula HAVING exemplo
Para filtrar os grupos devolvidos por GROUP BY
cláusula, você pode usar um HAVING
cláusula. A consulta a seguir usa a cláusula HAVING
para selecionar o total de vendas dos anos após 2003.,
Code language: SQL (Structured Query Language) (sql)
Experimentá-Lo
A cláusula GROUP BY: MySQL vs. padrão SQL
Padrão SQL não permite que você use um alias GROUP BY
cláusula, no entanto, o MySQL suporta isso.
Por exemplo, a seguinte consulta extrai o ano a partir da data de ordem. Primeiro, ele usa year
como um alias de expressão YEAR(orderDate)
e, em seguida, usa o year
nome GROUP BY
cláusula., Esta consulta não é válida no SQL padrão.
Experimentá-Lo
o MySQL também permite que você classificar os grupos em ordem crescente ou decrescente ordens, enquanto o padrão SQL não. A ordem padrão é ascendente., Por exemplo, se você deseja obter o número de pedidos por status e classificar o estado em ordem decrescente, você pode usar o GROUP BY
cláusula com DESC
como a consulta a seguir:
Code language: SQL (Structured Query Language) (sql)
Experimentá-Lo
Repare que usamos DESC
GROUP BY
cláusula para classificar o status
, em ordem decrescente., Nós também pode especificar explicitamente ASC
GROUP BY
cláusula para classificar os grupos por estado, em ordem crescente.
neste tutorial, mostramos – lhe como usar a cláusula MySQL GROUP BY
para agrupar linhas em subgrupos com base em valores de colunas ou expressões.
- este tutorial foi útil?
- YesNo