Как рассчитать общий результат запроса в php?

Мне было интересно, могу ли я получить некоторую помощь, повторяющую сумму каждого столбца на основе результата запроса. Скриншот вывода таблицы

<?php

if ($stationid=="") {
$query  = "select * from " . $tablename . " where  date_created >= '" . $startdate . "' and date_created <= '" . $enddate . "' and status='1' order by id desc"; ?>

$result = do_query($query);
$total = mysql_num_rows($result);
if ($total>0) {
while($row = do_fetch_result($result)){
?>

<?php 
$sum_static = $row['SUM(element_10)'];
$sum_gif = $row['SUM(element_11)'];
$sum_ibv = $row['SUM(element_12)'];
$sum_html5 = $row['SUM(element_13)'];
$sum_landing = $row['SUM(element_14)'];
$sum_revs = $row['SUM(element_15)'];
?>

<tr>
<td><?php echo $sum_static; ?></td>
<td><?php echo $sum_ibv; ?></td>
<td><?php echo $sum_gif; ?></td>
<td><?php echo $sum_html5; ?></td>
<td><?php echo $sum_landing; ?></td>
<td colspan=1><?php echo $sum_revs; ?></td>
</tr>

person wolverine_1024    schedule 23.03.2018    source источник
comment
SELECT SUM(...) ... GROUP BY ? mysqltutorial.org/mysql-aggregate-functions.aspx   -  person CD001    schedule 23.03.2018
comment
Добро пожаловать в Stack Overflow. Чтобы помочь сообществу ответить на ваш вопрос, предоставьте более подробную информацию о том, что вы хотите суммировать. Даже глядя на ваш скриншот, неясно, какой результат вы хотите получить.   -  person Kyle O'Brien    schedule 23.03.2018
comment
Извините, я хотел бы повторить сумму каждого столбца под списком результатов.   -  person wolverine_1024    schedule 23.03.2018
comment
Возможный дубликат вычислить общую сумму всех цифр в столбец   -  person yivi    schedule 23.03.2018


Ответы (3)


Если нам нужно вычислить сумму из отдельных строк (если все, что мы хотим вернуть, это итоги, то это не самый эффективный способ получить итоги), мы могли бы инициализировать переменные $sum_foo равными нулю...

$sum_static = 0;
$sum_foo    = 0;

А затем для каждой извлеченной строки добавьте значение столбца к промежуточной сумме.

$sum_static += $row['static'];
$sum_foo  c += $row['foo'];

После того, как последняя строка будет выбрана, переменные $sum_foo будут иметь общее значение для этого столбца для всех строк.


С точки зрения производительности, это очень неэффективный способ получения только итогов. Мы можем сделать так, чтобы база данных возвращала итоги. Мы убираем * в списке SELECT и указываем агрегатные функции в списке SELECT:

 SELECT SUM(static)   AS sum_static
      , SUM(foo)      AS sum_foo
   FROM ... 

Выполните запрос и выберите одну строку, которая будет возвращена, и строка будет иметь предварительно вычисленные итоги...

 $row['sum_static']
 $row['sum_foo']
person spencer7593    schedule 23.03.2018

Просто укажите имя столбца с агрегатной функцией.

SELECT SUM(column1),SUM(column2)
 FROM tablename
person user9528504    schedule 23.03.2018
comment
Пробовал так, расчет работает и эхо, но список пропадает. - person wolverine_1024; 23.03.2018
comment
Я не получаю точную проблему, в которой вам нужна сумма всех столбцов сразу после извлечения, как она может исчезнуть - person user9528504; 23.03.2018

<?php
$overallstatic="0";
$overallgif="0";
$overallibv="0";
$overallhtml5="0";
$overalllanding="0";
$overallrev="0";
<?

<?php
$overallstatic=$overallstatic+$row['element_10'];
$overallgif=$overallgif+$row['element_11'];
$overallibv=$overallibv+$row['element_12'];
$overallhtml5=$overallhtml5+$row['element_13'];
$overalllanding=$overalllanding+$row['element_14'];
$overallrev=$overallrev+$row['element_15'];
?>

<?php
<td><?php echo $overallstatic; ?></td>
<td><?php echo $overallibv; ?></td>
<td><?php echo $overallgif; ?></td>
<td><?php echo $overallhtml5; ?></td>
<td><?php echo $overalllanding; ?></td>
<td colspan=1><?php echo $overallrev; ?></td>
?>

Это сработало.

person wolverine_1024    schedule 23.03.2018
comment
это кажется очень близким к тому, что я предложил в своем ответе. - person spencer7593; 23.03.2018