Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Среднее значение
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Среднее значение

Страниц (1): [1]
 

1. ATOM - 15 Ноября, 2013 - 15:46:14 - перейти к сообщению
Товарищи, подскажите пожалуйста, как реализовать всё в 1 sql запросе.

CODE (PHP):
скопировать код в буфер обмена
  1.  
  2. function avg ()
  3. {
  4. $temp = mysql_query ("SELECT round(SUM(`money`)) as `money` FROM `money` group by month (FROM_UNIXTIME(`date`, '%Y-%m-%d')), year (FROM_UNIXTIME(`date`, '%Y-%m-%d')) order by `date` desc");
  5. $row = mysql_num_rows($temp);
  6. for ($i=0; $i<$row; $i++){
  7. $tem = mysql_fetch_array($temp);
  8. $te += $tem['money'];
  9. }
  10. return $te/$row;
  11. }
  12.  


Сам запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT round(SUM(`money`)) AS `money` FROM `money` GROUP BY month (FROM_UNIXTIME(`date`, '%Y-%m-%d')), year (FROM_UNIXTIME(`date`, '%Y-%m-%d')) ORDER BY `date` DESC


с пхп конечно всё получилось, но вот вопрос, можно ли это реализовать всё в одном лишь sql запросе?
sql запрос, выводит месяцы и сумму в каждом месяце, нужно суммировать суммы всех месяцев и разделить на количество месяцев. Как можно сделать?
2. Deonis - 15 Ноября, 2013 - 16:30:47 - перейти к сообщению
AVG() вместо SUM() ?
3. ATOM - 15 Ноября, 2013 - 16:53:22 - перейти к сообщению
не катит, выводит месяца и сумму за каждый месяц. а надо это всё суммировать и разделить на число месяцев
4. imya - 15 Ноября, 2013 - 16:58:28 - перейти к сообщению
Использовать

?
5. Мелкий - 15 Ноября, 2013 - 17:25:29 - перейти к сообщению
imya, с postgree не путаете? Или mysql научился такой штуке?

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT avg(money) FROM (
  2. SELECT round(SUM(`money`)) AS `money` FROM `money` GROUP BY month (FROM_UNIXTIME(`date`, '%Y-%m-%d')), year (FROM_UNIXTIME(`date`, '%Y-%m-%d'))
  3. ) monthgroups
6. ATOM - 15 Ноября, 2013 - 18:09:18 - перейти к сообщению
Мелкий пишет:
imya, с postgree не путаете? Или mysql научился такой штуке?

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT avg(money) FROM (
  2. SELECT round(SUM(`money`)) AS `money` FROM `money` GROUP BY month (FROM_UNIXTIME(`date`, '%Y-%m-%d')), year (FROM_UNIXTIME(`date`, '%Y-%m-%d'))
  3. ) monthgroups


спасибо как раз то что нужно!
PHP:
скопировать код в буфер обмена
  1.  
  2. function avg ()
  3. {
  4.  
  5. return $temp = mysql_fetch_object(mysql_query("SELECT avg(money) as `money` FROM (SELECT round(SUM(`money`)) AS `money` FROM `money` GROUP BY month (FROM_UNIXTIME(`date`, '%Y-%m-%d')), year (FROM_UNIXTIME(`date`, '%Y-%m-%d'))) monthgroups"))->money;
  6. }
  7.  

 

Powered by ExBB FM 1.0 RC1