for example, you can use window function to get records with count in one query: db(...).select( ... , 'count(id) OVER() AS cnt' )
воскресенье, 15 ноября 2020 г. в 03:35:34 UTC+3, [email protected]: > It was in 2017 > Now you can pass to select raw-sql-strings with any expression, just end > with ' ... *AS* some_name' (*AS* must be in uppercase ) > > воскресенье, 15 ноября 2020 г. в 02:54:53 UTC+3, [email protected]: > >> looks like need executeSQL needed for string_agg: >> Is it possible to do more advanced queries (like using string_agg) with >> DAL in the meantime? >> Massimo Di Pierro >> Apr 12, 2017, 4:21:36 AM >> to [email protected] >> You have to use db.executesql for that. Sorry. >> >> On Saturday, November 14, 2020 at 3:28:06 PM UTC-8 [email protected] >> wrote: >> >>> just replace *GROUP_CONCAT* with *string_agg * >>> >>> воскресенье, 15 ноября 2020 г. в 02:19:52 UTC+3, [email protected]: >>> >>>> I have postgres. How would it look for that? >>>> >>>> On Saturday, November 14, 2020 at 9:03:13 AM UTC-8 [email protected] >>>> wrote: >>>> >>>>> Just in case : pydal doesnt support backend specific aggregate >>>>> functions >>>>> >>>>> >>>>> суббота, 14 ноября 2020 г. в 19:54:35 UTC+3, [email protected]: >>>>> >>>>>> There is no db.executesql >>>>>> >>>>>> суббота, 14 ноября 2020 г. в 19:51:52 UTC+3, [email protected]: >>>>>> >>>>>>> sorry, did not mean direct SQL through db.executesql , meant through >>>>>>> DAL >>>>>>> >>>>>>> On Saturday, November 14, 2020 at 8:23:11 AM UTC-8 [email protected] >>>>>>> wrote: >>>>>>> >>>>>>>> Assuming sqlite: >>>>>>>> person_cnt = >>>>>>>> db.PERSON_PROJECT_PRIORITY.person_fk.count().with_alias('person_cnt') >>>>>>>> >>>>>>>> >>>>>>>> prioritySet = db((db.PERSON.id <http://db.person.id/> == >>>>>>>> PERSON-PROJECT-PRIORITY.person_fk) & (PROJECT.id == >>>>>>>> PERSON-PROJECT-PRIORITY.project_fk)).select( >>>>>>>> ..., >>>>>>>> person_cnt, >>>>>>>> 'GROUP_CONCAT(person.person_name,",") AS person_list' >>>>>>>> groupby = db.PERSON-PROJECT-PRIORITY.project_fk, >>>>>>>> ) >>>>>>>> >>>>>>>> суббота, 14 ноября 2020 г. в 09:40:17 UTC+3, [email protected]: >>>>>>>> >>>>>>>>> How to write a statement that counts which projects are the >>>>>>>>> priority of most people >>>>>>>>> >>>>>>>>> PROJECT >>>>>>>>> id >>>>>>>>> project_name >>>>>>>>> >>>>>>>>> PERSON >>>>>>>>> id >>>>>>>>> person_name >>>>>>>>> >>>>>>>>> PERSON_PROJECT_PRIORITY >>>>>>>>> person_fk >>>>>>>>> project_fk >>>>>>>>> >>>>>>>>> prioritySet = db((db.PERSON.id == >>>>>>>>> PERSON-PROJECT-PRIORITY.person_fk) & (PROJECT.id == >>>>>>>>> PERSON-PROJECT-PRIORITY.project_fk)).select() >>>>>>>>> >>>>>>>>> How to sort by count of projects which have priority in order of >>>>>>>>> the most persons' priority? >>>>>>>>> >>>>>>>>> Output looks like this: >>>>>>>>> >>>>>>>>> Paint-the-house (10) [Means is the top priority for 10 people] >>>>>>>>> Plant-a-garden (5) >>>>>>>>> Clean-out-garage (2) >>>>>>>>> >>>>>>>>> If you have additional time, how to write so output looks like: >>>>>>>>> >>>>>>>>> Paint-the-house (10) Tom, Sue, Tony, Ted, Mary, Fred, Sal, Chris, >>>>>>>>> Ed, Sally >>>>>>>>> Plant-a-garden (5) Harry, George, Joanne, Tony, Janet >>>>>>>>> Clean-out-garage (2) Clyde, Jane >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Alex Glaros >>>>>>>>> >>>>>>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/039006d4-0871-437c-ba75-848afa396ad3n%40googlegroups.com.

