Jump to content

Query para calcular médias mensais


HM
 Share

Recommended Posts

Boas,

Não sei se existe alguma alma caridosa que me possa ajudar a resolver um pequeno problema.

Tenho uma BD onde eu queria ter a média de um dos campos por mês.

Tenho um capo com C_data que regista as datas com o formato AAAA-MM-DD e outro com C_resultados. Eu consigo recuperar os valores que esta nos meses o meu problema esta em somar os mesmos.

Estou a fazer alguma coisa mal e não estou a consegui resolver. Se alguém poder ajudar deste já agradeço

Link to comment
Share on other sites

Nao sabendo de cor as funcoes de datas no MySQL, podias fazer algo como uma subquery para te listar o mes com os resultados e depois uma query acima dessa que te fizesse o group by com o avg.

Algo do genero:

SELECT `month`, AVG(`C_resultados`) AS `average` FROM (
SELECT getmonth(`C_data`) as `month`, `C_resultados`
FROM `c_tabela`
WHERE /*FILTRO AQUI*/
) as `inner_table`
group by `month`

PS: Nao sei se e' possivel fazer o "group by getmonth(`C_data)", mas a ser possivel poderias simplificar a query.

Link to comment
Share on other sites

😞 não estou a consegui

eu tenho uma coisa assim que me dá os resultados total do ano

<?php
$sql = "SELECT SUM(C_resultados from tb_resultados";

$query = mysql_query($sql);

while ($exibir = mysql_fetch_array($query)){;

$total_res = $exibir['SUM(C_resultados)'];

}

...
?>
<td><? echo round($total_res) ?></td>

mas eu queria ter os resultados de cada um dos meses e ao fim o total do ano :/

Link to comment
Share on other sites

Desculpa Carlos e agradeço a tua boa vontade em me ajudar mas não estou a conseguir.

Eu consigo ter os valores de cada mês em lista depois não consigo somá-los.

por este método que me enviaste não consigo fazer nada. Compreendo o que devia acontecer mas nada. Substitui o “t” pelo o nem da tabela “tb_resultados” e nada fiz alguma alterações cm outro métodos que estão na net e nada devo estar a fazer alguma coisa mesmo mal

Link to comment
Share on other sites

Pode parecer estupido mas a única maneira que eu tenho de conseguir ver os meses é assim

$sql_visualizar = mysql_query("SELECT * FROM tb_resultados");
while($linha = mysql_fetch_array($sql_visualizar)){

$ver_data = $linha['c_data'];
$a = $ver_data[5].$ver_data[6];

Deve haver uma maneira mais fácil 😞

E depois estou a fazer um switch ($a) { case 01: e por ai fora e mesmo assim não me esta a dar

Link to comment
Share on other sites

Continuas a mostrar apenas código que não usa a query que te foi sugerida. Não sei se estás à espera que alguém adivinhe os erros que tinhas no código que não funcionava e que não mostraste, mas diria que isso é pouco provável acontecer.

Também não sei muito bem de onde é que este problema surgiu, mas era capaz de ser boa ideia estudares uma referência de PHP primeiro.

Link to comment
Share on other sites

Rui mais uma vez agradeço o teu empenho assim como a tua boa vontade em me ajudar. Como eu referi no post mias a cima não estou a conseguir fazer nada com a query que me sugeriste. Nao estou a dizer que o erro é do codigo mas meu.

Não percebi a tua pregunta "Também não sei muito bem de onde é que este problema surgiu, mas era capaz de ser boa ideia estudares uma referência de PHP primeiro."

Link to comment
Share on other sites

Rui mais uma vez agradeço o teu empenho assim como a tua boa vontade em me ajudar. Como eu referi no post mias a cima não estou a conseguir fazer nada com a query que me sugeriste. Nao estou a dizer que o erro é do codigo mas meu.

E eu "perguntei-te" se estás à espera que alguém descubra o teu erro, sem mostrares o código que não funcionava.

Adicionalmente, nesta última mensagem disseste basicamente que não sabes iterar sobre os resultados de um query em PHP, daí "ser boa ideia estudares uma referência de PHP primeiro" (ou seja, aprenderes as bases de forma organizada usando um bom tutorial de PHP, e começares por tirares dúvidas em problemas mais básicos do que este).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.