def sum(event_collection, target_property, timeframe=None, timezone=None, interval=None, filters=None,
        group_by=None, order_by=None, max_age=None, limit=None):
    """ Performs a sum query

    Adds the values of a target property for events that meet the given criteria.

    :param event_collection: string, the name of the collection to query
    :param target_property: string, the name of the event property you would like use
    :param timeframe: string or dict, the timeframe in which the events
    happened example: "previous_7_days"
    :param timezone: int, the timezone you'd like to use for the timeframe
    and interval in seconds
    :param interval: string, the time interval used for measuring data over
    time example: "daily"
    :param filters: array of dict, contains the filters you'd like to apply to the data
    example: [{"property_name":"device", "operator":"eq", "property_value":"iPhone"}]
    :param group_by: string or array of strings, the name(s) of the properties you would
    like to group you results by.  example: "customer.id" or ["browser","operating_system"]
    :param order_by: dictionary or list of dictionary objects containing the property_name(s)
    to order by and the desired direction(s) of sorting.
    Example: {"property_name":"result", "direction":keen.direction.DESCENDING}
    May not be used without a group_by specified.
    :param limit: positive integer limiting the displayed results of a query using order_by
    :param max_age: an integer, greater than 30 seconds, the maximum 'staleness' you're
    willing to trade for increased query performance, in seconds

    """
    _initialize_client_from_environment()
    return _client.sum(event_collection=event_collection, timeframe=timeframe, timezone=timezone,
                       interval=interval, filters=filters, group_by=group_by, order_by=order_by,
                       target_property=target_property, max_age=max_age, limit=limit)