按用户ID循环查询结果并在电子表格中进行总计

时间:2018-02-06 21:50:15

标签: php mysql excel phpspreadsheet

我正在尝试在php脚本中创建一个电子表格,用于从mysql查询中选择数据。

查询有效,我的下面脚本的工作原理是它将我的整个结果集插入到我的电子表格中,如下所示:

enter image description here

我唯一想知道的是如何修改数组循环,以便我可以按用户总计4列(C,D,E和F)的总和。基本上,它需要意识到它是用户ID 48的最后一条记录,因此我可以插入一行总计,然后移动到下一个用户。

我觉得它应该相当简单,但我现在似乎无法理解它。唯一的另一个因素是,当这个查询运行时,每个用户最多可以有5条记录,因此我可以使用USER ID来关联用户,但是如果有意义的话,记录将依赖于ID和Date。 / p>

在为下一位用户撰写信息之前,如何按用户分组并总计他们的数字?

        $sql = "
            select 
             concat(u.first_name, '  ', u.last_name) as Name,
             t.ext_id as ID,
             t.total_talk_time_minutes as TalkTime,
             t.total_outbound as Outbound,
             t.total_inbound as Inbound,
             t.dealers_contacted as Dealers,
             t.date_of_report as Date
            From
                ambition.ambition_totals t
            INNER JOIN
                ambition.ambition_users u
            ON 
                t.extension = u.extension
            where
                date_of_report 
            between
                curdate() - interval 5 day and curdate()"  or die(mysqli_error( $conn));


            $result=mysqli_query($conn,$sql);


            $spreadsheet = new Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            $sheet->setCellValue('A1', 'Name');
            $sheet->setCellValue('B1', 'User ID');
            $sheet->setCellValue('C1', 'Talk Time Per Call');
            $sheet->setCellValue('D1', 'Outbound Calls');
            $sheet->setCellValue('E1', 'Inbound Calls');
            $sheet->setCellValue('F1', 'Dealer Contacts');
            $sheet->setCellValue('G1', 'Date');

            $rowNumber = 2;

              while($row = mysqli_fetch_assoc($result)) 
              {
                $col = 'A';

                foreach($row as $cell){
                    $sheet -> setCellValue($col.$rowNumber, $cell);
                    $col++;
                }

                $rowNumber++;
            }

0 个答案:

没有答案