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
谢谢!