Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在一个查询中使用func.max和func.count_Python_Sql_Sqlalchemy - Fatal编程技术网

Python 在一个查询中使用func.max和func.count

Python 在一个查询中使用func.max和func.count,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,我有两张桌子: 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

我有两张桌子:

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]