Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RonaldoJSS

Operação com array do MySQL

Recommended Posts

Prezados sou meio novo no PHP, estou tendo uma pouco de dificuldades em fazer operação com um vetor de dados que obtive de uma consulta no banco MySQL. Meu array é um vetor de datas, e eu preciso obter a média das diferenças das datas, exemplo:

1. 03/06/2016;

2. 05/06/2016;

3. 08/06/2016;

4. 09/06/2016;

Logo a diferença entre:

2-1 = 2 dias;

3-2= 3 dias;

4-3 =1 dia;

A média seria (2+3+1)/3

Se alguém puder me ajudar, com isso com fazer essa operação através de uma query sql, eu agradeceria muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Dá para fazer no MySQL desta forma:

SELECT
        /* calcula a diferença entre a data da linha atual com a da linha anterior e calcula a media */
        AVG(DATEDIFF(d1.data, d2.data)) as media
    FROM (
        SELECT /* seleciona todas as datas e enumera as linhas */
                @a:=@a+1 as row_number, dt.*
            FROM nome_tabela_ou_view as dt,
            (SELECT @a:=0) as foo
    ) as d1
    INNER JOIN (
        SELECT /* mesmo select de cima, mas usando outro nome para a variavel */
                @b:=@b+1 as row_number, dt.*
            FROM nome_tabela_ou_view as dt,
            (SELECT @b:=0) as foo
    ) as d2 ON d2.row_number = (d1.row_number-1) /* junta a linha linha atual com a linha anterior */

Para testar, eu criei uma tabela só com a coluna data contendo as datas que você informou no post. Se o seu select que retorna a lista de datas for grande, você pode criar uma view e usá-la neste select para não deixá-lo mais confuso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.