Se você utiliza um função de agrupamento em uma instrução
que não contenha um cláusula GROUP BY
,
equivale a fazer um agrupamento com todos os registros.
COUNT(expr)
Retorna a quantidade de valores
não-NULL
nos registros recuperados por
uma instrucao SELECT
:
mysql>SELECT estudante.nome_estudente,COUNT(*)
->FROM estudante,curso
->WHERE estudante.id_estudante=curso.id_estudante
->GROUP BY nome_estudante;
COUNT(*)
difere um pouco ao retornar o
número de registros recuperados, se eles possuírem ou
não valores NULL
.
COUNT(*)
é otimizado para retornar
muito rápido se SELECT
recuoperar
registros de uma tabela, nenhuma outra coluna for
retornada, e não houver nenhuma cláusula
WHERE
. Por exemplo:
mysql> SELECT COUNT(*) FROM estudente;
Esta otimizacão se aplica apenas a tabelas
MyISAM
e ISAM
,
porque uma contagem exata de registros é armazenada para
estes tipos de tabelas e podem ser acessadas muito
rapidamente. Para mecanismos de armazenamentos
transacionais (InnodB
,
BDB
), armazenar um contagem de
registros exatos é mais problemático porque múltiplas
transações podem estar ocorrendo, e cada uma pode afetar
a contagem.
COUNT(DISTINCT expr,[expr...])
Retorna a quantidade de regiastros com valores
não-NULL
diferentes:
mysql> SELECT COUNT(DISTINCT resultados) FROM estudente;
No MySQL você pode obter o número de combinação de
expressões distintas que não contém NULL fornecendo uma
lista de expressões. No SQL-99 você teria que concatenar
todas as expressão utilizando COUNT(DISTINCT
...)
.
AVG(expr)
Retorna o valor médio de expr
:
mysql>SELECT nome_estudante, AVG(nota_teste)
->FROM estudante
->GROUP BY nome_estudante;
MIN(expr)
, MAX(expr)
Retorna o valor mínimo o u máximo de
expr
. MIN()
e
MAX()
poder usar uma string como
argumento; nestes casos eles retornam o a string de valor
mínimo ou máximo. See Secção 5.4.3, “Como o MySQL Utiliza Índices”.
mysql>SELECT nome_estudante, MIN(nota_teste), MAX(nota_teste)
->FROM estudante
->GROUP BY nome_estudante;
Em MIN()
, MAX()
e
outras funções de agrupamento o MySQL, atualmente,
compara colunas ENUM
e
SET
pelo seu valor string em vez de
fazê-lo pela sua posição relativa de string no
conjunto. Isto será retificado.
SUM(expr)
Retorna a soma de expr
. Note que se o
conjunto de retorno não possuir registros ele retornará
NULL!
GROUP_CONCAT(expr)
Sintaxe completa:
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {inteiro_sem_sinal | nome_coluna | formula} [ASC | DESC] [,col ...]] [SEPARATOR valor_str])
Esta função foi adicionada na versão 4.1 do MySQL. Ele retorna a string resultante contendo valores de um grupo:
mysql>SELECT nome_estudante,
->GROUP_CONCAT(note_teste)
->FROM estudante
->GROUP BY nome_estudante;
ou mysql>SELECT nome_estudante,
->GROUP_CONCAT(DISTINCT nota_teste
->ORDER BY nota_teste DESC SEPARATOR " ")
->FROM estudante
->GROUP BY nome_estudante;
No MySQL você pode obter valores de combinações de
expressões concatenados. Você pode eliminar valores
duplicados utilizando DISTINCT
. Se
você quiser ordenar valores no resultado você deve
utilizar a cláusula ORDER BY
. Para
ordenar inversamente, adicione a palavra chave
DESC
(descendente) ao nome da coluna
que você está ordenando na cláusula ORDER
BY
. O padrão é a ordem crescente; pode-se
também especificála explicitamente usando a palavra
chave ASC
. SEPARATOR
é o valor string que deve ser inserido entre os valores
no resultado. O padrão é um virgula
('","
'). Você pode remover o separador
especificando SEPARATOR ""
.
Você pode definir um tamanho máximo permitido com a
variável group_concat_max_len
em sua
configuração. A sintaxe para se fazer isto em tempo de
execução é:
SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
Se um tamanho máximo tiver sido atribuido, o resultado é truncado no seu tamanho máximo.
A função GROUP_CONCAT()
é uma
implementação aprimorada da função básica
LIST()
suportada pelo Sybase SQL
Anywhere. GROUP_CONCAT()
é compatível
com a funcionalidade extrwemamente limitada de de
LIST()
, se utilizada em apenas uma
coluna e nenhuma outra opção é especificada.
LIST()
não tem uma ordem de
classificação padrão.
VARIANCE(expr)
Retorna a variância padrão de expr
(considerando linha como toda a população, não com uma
amostra; assim ele tem o número de linhas como
denominador). Esta é uma extensão do SQL-99 (disponível
somente a partir da versão 4.1).
STD(expr)
,
STDDEV(expr)
Retorna o desvio padrão de expr
(a
raiz quadrada de VARIANCE()
). Esta é
uma extensão do SQL-99. O formato
STDDEV()
desta função é fornecida
para compatibilidade com Oracle.
BIT_OR(expr)
Retorna o resultado da operação binária
OR
de todos os bits em
expr
. O calcululo é relizado com
precisão de 64 bits (BIGINT
).
A função retortna 0 se não houver registros coincidentes.
BIT_XOR(expr)
Retorna o bitwise XOR
de todos os bits
em expr
. O calculo é relizado com
precisão de 64-bits (BIGINT
).
A função retorna 0 se não houver linhas coincidentes.
Esta função está disponível a partir do MySQL 4.1.1.
BIT_AND(expr)
Retorna o resultado da operação binária
AND
de todos os bits em
expr
. O calcululo é relizado com
precisão de 64 bits (BIGINT
).
A função retortna 1 se não houver registros coincidentes.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.