Funções GROUP BY
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-
NULLnos registros recuperados por uma instrucaoSELECT: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 valoresNULL.COUNT(*)é otimizado para retornar muito rápido seSELECTrecuoperar registros de uma tabela, nenhuma outra coluna for retornada, e não houver nenhuma cláusulaWHERE. Por exemplo:mysql>
SELECT COUNT(*) FROM estudente;Esta otimizacão se aplica apenas a tabelas
MyISAMeISAM, 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-
NULLdiferentes:mysql>
SELECT COUNT(DISTINCT resultados) FROM estudente;No MariaDB 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()eMAX()poder usar uma string como argumento; nestes casos eles retornam o a string de valor mínimo ou máximo. See "Como o MariaDB 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 colunasENUMeSETpelo 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 MariaDB. 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 MariaDB 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áusulaORDER BY. Para ordenar inversamente, adicione a palavra chaveDESC(descendente) ao nome da coluna que você está ordenando na cláusulaORDER BY. O padrão é a ordem crescente; pode-se também especificála explicitamente usando a palavra chaveASC.SEPARATORé o valor string que deve ser inserido entre os valores no resultado. O padrão é um virgula ('',''). Você pode remover o separador especificandoSEPARATOR ''.Você pode definir um tamanho máximo permitido com a variável
group_concat_max_lenem 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ásicaLIST()suportada pelo Sybase SQL Anywhere.GROUP_CONCAT()é compatível com a funcionalidade extrwemamente limitada de deLIST(), 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 deVARIANCE()). Esta é uma extensão do SQL-99. O formatoSTDDEV()desta função é fornecida para compatibilidade com Oracle.BIT_OR(expr)Retorna o resultado da operação binária
ORde todos os bits emexpr. 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
XORde todos os bits emexpr. 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 MariaDB.
BIT_AND(expr)Retorna o resultado da operação binária
ANDde todos os bits emexpr. O calcululo é relizado com precisão de 64 bits (BIGINT).A função retortna 1 se não houver registros coincidentes.