code: def aggregate(self, func, *columns):
          
          if not columns:
              columns = ["*"]
  
          self.aggregate_ = {"function": func, "columns": columns}
  
          previous_columns = self.columns
  
          results = self.get(*columns).all()
  
          self.aggregate_ = None
  
          self.columns = previous_columns
  
          if len(results) > 0:
              return dict((k.lower(), v) for k, v in results[0].items())["aggregate"]
docs: Execute an aggregate function against the database
  
          :param func: The aggregate function
          :type func: str
  
          :param columns: The columns to execute the fnction for
          :type columns: tuple
  
          :return: The aggregate result
          :rtype: mixed