@@ 389-422 (lines=34) @@ | ||
386 | * get aggregation row |
|
387 | * @return array |
|
388 | */ |
|
389 | public function getAggregationData() |
|
390 | { |
|
391 | $result = []; |
|
392 | foreach ($this->data as $row) { |
|
393 | foreach ($this->aggregations as $column => $aggregation_type) { |
|
394 | switch ($aggregation_type) { |
|
395 | case ColumnAggregationFunction::$aggregation_type_sum: |
|
396 | case ColumnAggregationFunction::$aggregation_type_avg: |
|
397 | if (!isset($result[$column])) { |
|
398 | $result[$column] = 0; |
|
399 | } |
|
400 | $result[$column] += $row[$column]; |
|
401 | break; |
|
402 | case ColumnAggregationFunction::$aggregation_type_min: |
|
403 | if (!isset($result[$column]) || $row[$column] < $result[$column]) { |
|
404 | $result[$column] = $row[$column]; |
|
405 | } |
|
406 | break; |
|
407 | case ColumnAggregationFunction::$aggregation_type_max: |
|
408 | if (!isset($result[$column]) || $row[$column] > $result[$column]) { |
|
409 | $result[$column] = $row[$column]; |
|
410 | } |
|
411 | break; |
|
412 | } |
|
413 | } |
|
414 | } |
|
415 | ||
416 | foreach ($this->aggregations as $column => $aggregation_type) { |
|
417 | if ($aggregation_type == ColumnAggregationFunction::$aggregation_type_avg) { |
|
418 | $result[$column] = $result[$column] / count($this->data); |
|
419 | } |
|
420 | } |
|
421 | return $result; |
|
422 | } |
|
423 | } |
|
424 |
@@ 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 |