簡體   English   中英

在一個查詢中使用func.max和func.count

[英]Using func.max and func.count in one query

我有兩個表:

class Shops(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(255))
    order = db.relationship('Order', backref = 'purchased', lazy = 'dynamic')

class Order(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    date = db.Column(db.DateTime)
    shop = db.Column(db.Integer, ForeignKey('shop.id'))

我想根據訂單獲得銷量最高的商店,例如:

query = db.session.query(Shops.name.label('TopShop'),Order,func.max(func.count(Order.shop)))

出現以下錯誤:

ProgrammingError: (ProgrammingError) (1111, u'Invalid use of group function') 

請問正確的方向嗎?

熱門商店(按訂單數 ):

subq = (session.query(Order.shop, func.count(Order.id).label("num_orders")).
        group_by(Order.shop)).subquery()
q = session.query(Shops).join(subq, Shops.id == subq.c.shop).order_by(subq.c.num_orders.desc())

# top 1
print q.first()
# top 5
print q[:5]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM