sum()在多个列上使用group-by函数


sum() on multiple columns with group by function

我需要收集每列的计数,并且每行都有多个结果。问题是这些列正在复制第一列的值。

  $sql="SELECT MODEL, 
     sum(CLICK) AS LOCCLICK, sum(VIEW) AS LOCVIEW, sum(EMAIL) AS LOCEMAIL, sum(SHARE) AS LOCSHARE
      FROM     STAT
      WHERE    ID = ".$id."
      GROUP BY MODEL";
       $result = $mysqli->query($sql);
        if ($result->num_rows > 0) {
            // output data of each row
            while($row = $result->fetch_assoc()) {
                $clickcoun = $row['LOCCLICK'];
                $viewcoun = $row['LOCVIEW'];
                $emailcoun = $row['LOCEMAIL'];
                $sharecoun = $row['LOCSHARE'];
                $model = $row['MODEL'];
                echo "'n";
                // Log the stats into the daily updates.
                 $sqlx = 'INSERT INTO DAILY (ID, QDATE, VIEWS, CLICKS, EMAILS, SHARES, MODEL) 
                VALUES ('.$id.', NOW(), '.$viewcoun.', '.$clickcoun.', '.$emailcoun.', '.$sharecoun.', "'.$model.'" )';
                  $mysqli->query($sqlx);
                  } 
                 } else {
                      echo "0 results"; die();
                 }

我正在寻找的结果如下:

福特:浏览量=302,电子邮件=21,股票=10

道奇:浏览量=567,电子邮件=41,股票=13

雪佛兰:浏览量=324,电子邮件=23,股票=9

我想把这些数据输入到每日统计数据中,这样我就可以查询它们,把它们放到一个图表中,并显示它们的每日覆盖范围。在月底,我计划以同样的方式再次分解这些内容,以便进行月度概述。

您不需要循环来完成此操作。只需使用insert . . . select:

INSERT INTO DAILY (ID, MODEL, CLICKS, VIEWS, EMAIL, SHARES, QDATE) 
    SELECT $id, MODEL, sum(CLICK) AS LOCCLICK, sum(VIEW) AS LOCVIEW,
           sum(EMAIL) AS LOCEMAIL, sum(SHARE) AS LOCSHARE, now()
    FROM STAT
    WHERE ID = ".$id."
    GROUP BY MODEL;