GroupBy и сумма в SQLAlchemy?

Я пытаюсь сгруппировать несколько полей в таблице, а затем суммировать группы, но они получают двойной счет.

Мои модели выглядят следующим образом:

class CostCenter(db.Model):
     __tablename__ = 'costcenter'
     id = db.Column(db.Integer, primary_key=True, autoincrement=True)
     name = db.Column(db.String)
     number = db.Column(db.Integer)

class Expense(db.Model):

    __tablename__ = 'expense'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    glitem_id = db.Column(db.Integer, db.ForeignKey('glitem.id'))
    glitem = db.relationship('GlItem')
    costcenter_id = db.Column(db.Integer, db.ForeignKey('costcenter.id'))
    costcenter = db.relationship('CostCenter')
    value = db.Column(db.Float)
    date = db.Column(db.Date)

Я использовал:

expenses=db.session.query(Expense,func.sum(Expense.value)).group_by(Expense.date).filter(CostCenter.id.in_([1,2,3]))

Когда я печатаю расходы, он показывает следующий SQL-оператор. Это выглядит правильно для меня, но я не очень знаком с SQL. Проблема в том, что значения, которые он выводит как sum_1, подсчитываются несколько раз. Если у меня есть [1] элемент в «в статусе», он будет суммировать все три. Если у меня есть [1,2], он сложит все три, а затем удвоит его, а если у меня будет [1,2,3], он сложит все три и утроит его. Я не уверен, почему он рассчитывает несколько раз. Как я могу это исправить?

SELECT expense.id AS expense_id, expense.glitem_id AS expense_glitem_id, expense.costcenter_id AS         expense_costcenter_id, expense.value AS expense_value, expense.date AS expense_date, sum(expense.value) AS sum_1 
FROM expense, costcenter 
WHERE costcenter.id IN (:id_1, :id_2, :id_3) GROUP BY expense.date

Спасибо!

8
задан TH22 28 August 2014 в 21:48
поделиться