3
我想將表中的幾個字段組合起來,然後對這些組進行求和,但是他們會被重複計算。在SQLAlchemy中GroupBy和Sum?
我的型號如下:
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
謝謝!