@@ 284-317 (lines=34) @@ | ||
281 | * get aggregation row |
|
282 | * @return array |
|
283 | */ |
|
284 | public function getAggregationData() |
|
285 | { |
|
286 | $result = []; |
|
287 | foreach ($this->data_source as $row) { |
|
288 | foreach ($this->aggregations as $column => $aggregation_type) { |
|
289 | switch ($aggregation_type) { |
|
290 | case ColumnAggregationFunction::$aggregation_type_sum: |
|
291 | case ColumnAggregationFunction::$aggregation_type_avg: |
|
292 | if (!isset($result[$column])) { |
|
293 | $result[$column] = 0; |
|
294 | } |
|
295 | $result[$column] += $row[$column]; |
|
296 | break; |
|
297 | case ColumnAggregationFunction::$aggregation_type_min: |
|
298 | if (!isset($result[$column]) || $row[$column] < $result[$column]) { |
|
299 | $result[$column] = $row[$column]; |
|
300 | } |
|
301 | break; |
|
302 | case ColumnAggregationFunction::$aggregation_type_max: |
|
303 | if (!isset($result[$column]) || $row[$column] > $result[$column]) { |
|
304 | $result[$column] = $row[$column]; |
|
305 | } |
|
306 | break; |
|
307 | } |
|
308 | } |
|
309 | } |
|
310 | ||
311 | foreach ($this->aggregations as $column => $aggregation_type) { |
|
312 | if ($aggregation_type == ColumnAggregationFunction::$aggregation_type_avg) { |
|
313 | $result[$column] = $result[$column] / $this->data_source->count(); |
|
314 | } |
|
315 | } |
|
316 | return $result; |
|
317 | } |
|
318 | } |
|
319 |
@@ 395-428 (lines=34) @@ | ||
392 | * get aggregation row |
|
393 | * @return array |
|
394 | */ |
|
395 | public function getAggregationData() |
|
396 | { |
|
397 | $result = []; |
|
398 | foreach ($this->data as $row) { |
|
399 | foreach ($this->aggregations as $column => $aggregation_type) { |
|
400 | switch ($aggregation_type) { |
|
401 | case ColumnAggregationFunction::$aggregation_type_sum: |
|
402 | case ColumnAggregationFunction::$aggregation_type_avg: |
|
403 | if (!isset($result[$column])) { |
|
404 | $result[$column] = 0; |
|
405 | } |
|
406 | $result[$column] += $row[$column]; |
|
407 | break; |
|
408 | case ColumnAggregationFunction::$aggregation_type_min: |
|
409 | if (!isset($result[$column]) || $row[$column] < $result[$column]) { |
|
410 | $result[$column] = $row[$column]; |
|
411 | } |
|
412 | break; |
|
413 | case ColumnAggregationFunction::$aggregation_type_max: |
|
414 | if (!isset($result[$column]) || $row[$column] > $result[$column]) { |
|
415 | $result[$column] = $row[$column]; |
|
416 | } |
|
417 | break; |
|
418 | } |
|
419 | } |
|
420 | } |
|
421 | ||
422 | foreach ($this->aggregations as $column => $aggregation_type) { |
|
423 | if ($aggregation_type == ColumnAggregationFunction::$aggregation_type_avg) { |
|
424 | $result[$column] = $result[$column] / count($this->data); |
|
425 | } |
|
426 | } |
|
427 | return $result; |
|
428 | } |
|
429 | } |
|
430 |