【发布时间】:2014-10-22 21:26:16
【问题描述】:
我正在尝试对表格中的几个字段进行分组,然后对这些组求和,但它们被重复计算了。
我的模型如下:
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 的值被多次计算。如果我在“in statment”中有 [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
谢谢!
【问题讨论】:
标签: python sql flask sqlalchemy flask-sqlalchemy