Eu tenho um banco de dados SQL no PHPMyAdmin e estou tentando escrever consultas para ele.
Uma das consultas que quero escrever é: Encontre a média de uma coluna contendo todos os dados e exiba essa média. Problema que tenho é que um item foi trazido duas vezes ao mesmo tempo. O nome da tabela é Pedidos. Por exemplo:
Como eu escreveria essa consulta SQL?
O resultado final Eu quero um datetime que é a média de todos os datetimes acima. Lembrar a figura inferior do datatime tem que ser calculada duas vezes na média.
Obrigado!
Respostas:
2 para resposta № 1Uau, isso foi difícil. Mas parece que eu trabalhei. Eu tentei várias coisas, mas foi incapaz de usar a função mysql avg depois de tudo:
SELECT FROM_UNIXTIME(SUM(Quantity * UNIX_TIMESTAMP(DateTimeStart)) / SUM(Quantity)) AS `avg-time` FROM orders;
Como cheguei a esta consulta?
- Eu suponho que sua mesa é chamada de "ordens".
- Para calcular com datas, é preferível converter as datas primeiro em timestamps unix. Eu uso o UNIX_TIMESTAMP função mysql para fazer isso.
- Eu multiplico cada datetimestart (como timestamps unix) por sua quantidade.
- Eu calculo a soma desses.
- Eu divido isto pela soma total de quantidades
- Nós poderíamos ser feitos agora. Mas eu acho que você gostaria de ter uma forma legível de novo (eu também, na verdade), então para converter o timestamp unix médio de volta para uma data legível eu uso FROM_UNIXTIME.