sql среднее алхимии булевых значений - PullRequest
0 голосов
/ 04 февраля 2020

В моей таблице есть значения с плавающей точкой и логические значения. теперь я хочу сгруппировать все данные по date и вычислить Average для каждого значения (с плавающей запятой и логическим значением). Для моих значений с плавающей запятой это работает, для значений bool это просто "true", а не, например, 1, если все логические значения для данной даты верны.

Таблица:

   | Date       | Value1      | Value2       |
    |:-----------|------------:|:------------:|
    | 2020-02-04 |        2    |     true     |
    | 2020-02-04 |        2    |     false    |
    | 2020-02-04 |        4    |     false    |
    | ...        |        ...  |     ...      |

Класс метода:

@classmethod
def values_day(cls, current_date):
    date_obj = date_obj_week(current_date)

    boolVal = func.avg(cast(cls.Value2, Integer)).label("Value2")
    floatVal = func.avg(cls.Value1).label("Value1")

    return db.session.query(cls.Datum, boolVal, floatVal) \
        .filter(cls.Date == current_date.strftime("%Y-%m-%d")) \
        .group_by(cls.Date)\
        .order_by("Date")

Конечная точка API:

class ValuesDay(Resource):
    def get(self):
        current_date = get_current_date()

        data = DataModel.values_day(current_date)

        data_json = data_schema_list_dump.dump(data)

        return {"data": data_json}, 200


api.add_resource(ValuesDay, '/api/data/v1/values_day/')

Результат на момент:

{
    "data": [
        {
            "Date": "2020-02-04",
            "Value1": 2.666667,
            "Value2": true 
        }
    ]
}

Ожидаемый результат:

{
    "data": [
        {
            "Date": "2020-02-04",
            "Value1": 2.666667,
            "Value2": 0.333333
        }
    ]
}

С Pandas: С pandas Я просто делаю среднее значение по всей таблице, и я получаю ожидаемый результат, но я не могу сделать это с помощью sqlalchemy

ordered_df = df.groupby("Date", as_index=False).agg("mean")

json_data = ordered_df.to_json(orient='records', force_ascii=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...