Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用group by函数对多列求和()_Php_Mysql_Sql_Group By_Sum - Fatal编程技术网

Php 使用group by函数对多列求和()

Php 使用group by函数对多列求和(),php,mysql,sql,group-by,sum,Php,Mysql,Sql,Group By,Sum,我需要收集每列的计数,每行有多个结果。问题是这些列重复了第一列的值 $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

我需要收集每列的计数,每行有多个结果。问题是这些列重复了第一列的值

  $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。选择

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;

我不理解问题陈述。你能分享一些样本数据和你想要得到的结果吗?你能给出4行样本数据吗?解释一下你到底想要什么吗?你说的“复制第一列的值”是什么意思?我认为您在问题描述中混合了行和列。我做了您要求的更改,以便更清楚。GolezTrol我知道不同之处,我需要每个列的计数,因为这些行插入了来自其他流量源的数据,这些流量源有数字,例如电子邮件的数字21,以及我收集统计数据的初始站点提供的统计数据。你的列的值是多少电子邮件、单击和查看我正在尝试,但它不起作用,对于now()如何与select一起工作,我有点困惑。也许这就是它不起作用的地方?