SQLAlchemy最多获得N个结果,每个类别的结果均小于M

时间:2019-06-30 16:25:53

标签: python sqlite sqlalchemy

我有三个表ABC,其中A s有B s和B s有{{1} },就像一所学校开设课程(数学,文学),而开设课程则是学生。不论它们属于哪个C,相同名称的B都被认为是相同的,在相同A下的C也是如此。

我想查询B个子集(简单的A),以便我最多得到filterN个,每个不超过{{1 }} B

我已经了解了许多获得每个类别的M最高排名的方法,但是甚至无法(见下文)与我的C一起使用...查询永远不会结束。

N

这是否可行?还是我应该只查询所有内容并循环使用Python,直到到达SQLite

编辑:

    subq = sess.query(
            C,
            func.row_number().over(
                partition_by=B.name,
                order_by=C.grade).label('n')).\
        filter(~A.name.startswith('something'), B.size==2, C.grade < threshold).\
        subquery()

    q_alias = aliased(Val, subq)
    q = sess.query(q_alias).filter(subq.c.n <= M)

0 个答案:

没有答案