GroupBy und Summe in SQLAlchemy?

Ich versuche, zu Gruppe ein paar Felder in einer Tabelle, und dann die Summe der Gruppen, aber Sie sind immer doppelt gezählt.

Meine Modelle sind wie folgt:

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)

Habe ich mit:

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

Wenn ich print-Ausgaben zeigt die SQL-Anweisung, die folgt. Es sieht korrekt zu mir, aber ich bin nicht so vertraut mit SQL. Das problem ist, dass die Werte ausgibt als sum_1 werden mehrfach gezählt. Wenn ich [1] item in die "Aussage" es wird die Summe aller drei. Wenn ich [1,2], es wird die Summe aller drei, und dann doppelklicken Sie es, und wenn ich [1,2,3], es wird die Summe aller drei-und Dreibettzimmer. Ich bin nicht sicher, warum es ist, zählen mehrfach. Wie kann ich dieses Problem beheben?

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

Dank!

InformationsquelleAutor TH22 | 2014-08-28

Schreibe einen Kommentar