示例#1
0
 /**
  * Build the query for the avg calculation
  *
  * @param   FabrikFEModelList  &$listModel  list model
  * @param   array              $labels      Labels
  *
  * @return  string	sql statement
  */
 protected function getAvgQuery(&$listModel, $labels = array())
 {
     $fields = $listModel->getDBFields($this->getTableName(), 'Field');
     $name = $this->getElement()->name;
     $field = FArrayHelper::getValue($fields, $name, false);
     if ($field !== false && $field->Type == 'time') {
         $db = $listModel->getDb();
         $label = count($labels) == 0 ? "'calc' AS label" : 'CONCAT(' . implode(', " & " , ', $labels) . ')  AS label';
         $name = $this->getFullName(false, false);
         $table = $listModel->getTable();
         $joinSQL = $listModel->buildQueryJoin();
         $whereSQL = $listModel->buildQueryWhere();
         return "SELECT SEC_TO_TIME(AVG(TIME_TO_SEC({$name}))) AS value, {$label} FROM " . $db->qn($table->db_table_name) . " {$joinSQL} {$whereSQL}";
     } else {
         return parent::getAvgQuery($listModel, $labels);
     }
 }