python - SQLAlchemy: return multiple values from sorting multiple columns -


i have postgres db holding data structured this:

app-type | app-version | version-number | description | number  ---------|-------------|----------------|------------ |---------   android |     bulls   |      1.0       |    apk      |  100   ios     |     bulls   |      1.0       |    plist    |  100   android |     bulls   |      1.0       |    apk      |   99   android |     titans  |      1.0       |    apk      |  100   ios     |     titans  |      1.0       |    plist    |  100   ios     |     titans  |      1.0       |    plist    |   99   android |     titans  |      1.0       |     apk     |   98 

i need write sqlalchemy expression take return highest number each app-type , each app-version, data returned should this.

app-type | app-version | version-number | description | number  ---------|-------------|----------------|------------ |---------   android |     bulls   |      1.0       |    apk      |  100   ios     |     bulls   |      1.0       |    plist    |  100   android |     titans  |      1.0       |    apk      |  100   ios     |     titans  |      1.0       |    plist    |  100 

i'm having lot of trouble trying figure out how return highest number per app-type every version in app-version. appreciated here.

the query i'm working off of far

sub_query = table.query.order_by(desc(table.app_version), table.app_type, desc(table.number)) query = sub_query.group_by(table.app_version).group_by(table.id).distinct(table.app_version).all() 

the simple way first find highest number per apptype/appversion (using subquery), , join main query on these results.

vi = versioninfo  # alias mapped object  # subquery sq = (     session     .query(         vi.app_type.label("app_type"),         vi.app_version.label("app_version"),         func.max(vi.number).label("max_number"),     )     .group_by(vi.app_type, vi.app_version) ).subquery("subq")  # main query q = (     session     .query(vi)     .join(sq,           and_(               vi.app_type == sq.c.app_type,               vi.app_version == sq.c.app_version,               vi.number == sq.c.max_number,           )) ) 

here 1 has assume there 1 highest number per apptype/appversion combination


Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -