php - 映射查询结果仅聚合在一个数字下
问题描述
我有一个非常基本的脚本,它使用基本查询返回结果行并将它们成功打印到 Excel 工作表
//Create and run query
$sql = "
SELECT Manager, count(*) as Items
from itemCount
where start_date >= '2019-01-01'
group by Manager
order by Manager";
$result = odbc_exec($DB2Conn, $sql);
$phpExcel = new PHPExcel;
$sheet = $phpExcel->getActiveSheet();
$sheet ->setTitle("Management Numbers");
$sheet ->getColumnDimension('A') -> setAutoSize(true);
$sheet ->getColumnDimension('B') -> setAutoSize(true);
//Create header row
$sheet->setCellValue('A1', 'Manager');
$sheet->setCellValue('B1', 'Items');
$rowCount = 2;
while($row = odbc_fetch_array($result)){
var_dump($row);
$sheet->setCellValue('A'.$rowCount, $row['Manager']);
$sheet->setCellValue('B'.$rowCount, $row['Items']);
$rowCount++;
}
$writer = PHPExcel_IOFactory::createWriter($phpExcel, "Excel2007");
$writer->save('Management Numbers.xlsx');
这是问题所在:
该查询当前以这种格式返回正确的行:
Manager | Items
-----------------
12 5
13 2
16 3
11 7
18 4
19 8
22 1
21 7
32 4
53 3
25 5
75 2
但是每个经理都向某个部门报告,我想映射它,以便我可以硬编码并将经理分配给部门。
如何使用数组将经理分配给像这样的部门
1=>12,13,16
2=>11,18,19,22,21
3=>32,53,25,75
这样我就得到了一个电子表格,其中只有部门编号和分配给它的经理的汇总编号,如下所示:
Manager | Items
------------------
1 41
2 91
3 185
解决方案
对于分配了部门的经理,您可以创建一个数组,例如
$manager_array['manager_id'][]='department_id';
$manager_array['1'][]=12;
$manager_array['1'][]=13;
$manager_array['1'][]=16;
或者
$manager_array['1']=array(12,13,16);
要获取每个部门的经理人数,请计算 $manager_array['manager_id'] 之类的
count($manager_array[1]);
您还可以使用 department_id 列(如果可能)扩展您的 itemCount 表。
推荐阅读
- javascript - 在 GUI 中交错的聊天机器人查询和回复
- git - 具有多个存储库的 git 稀疏结帐
- bash - 如何检查 Bash 脚本参数是否是用户定义的函数?
- reactjs - 在 React JS 中,我如何告诉父组件子组件发生了什么事?
- r - 在具有网络驱动器的大学计算机上使用 devtools 从 github 安装 R 包的问题
- python - Azure Databricks - 将 Parquet 文件读入 DataFrame
- php - 无法从soap响应中对base64decode进行gzdecode
- php - 在 Laravel 6 中使用 JsonResource 时验证 Json 不为空?
- php - 通过 PHP 使用 composer 安装而不使用 exec()
- python - 我的类实例在遍历 for 循环时消失