Thread: Select .. Having vs computer fields
Can use use computed fields on the "having" part of select? I have tried: select a,b, count(*) as dups_count from some_table having dups_count > 1; and it gives me the error "Attribute 'dups_count' not found"
At 12:54 PM 12/12/2001 -0500, Francisco Reyes wrote: >Can use use computed fields on the "having" part of select? >I have tried: >select a,b, count(*) as dups_count from some_table having dups_count > 1; > >and it gives me the error "Attribute 'dups_count' not found" You have to GROUP BY in order to use HAVING. For example: SELECT a,b, count(*) as dups_count FROM some_table GROUP BY a,b HAVING dups_count > 1; You should GROUP your rows by all the columns that are not count() or other aggregate function (like max(), min(), sum(), etc). >---------------------------(end of broadcast)--------------------------- >TIP 3: if posting/reading through Usenet, please send an appropriate >subscribe-nomail command to majordomo@postgresql.org so that your >message can get through to the mailing list cleanly Javier Dussaillant G. ashkar@vrweb.cl Departamento de Desarrollo VRWEB ltda. http://www.vrweb.cl
On Wed, 12 Dec 2001, Javier Dussaillant wrote: > At 12:54 PM 12/12/2001 -0500, Francisco Reyes wrote: > >Can use use computed fields on the "having" part of select? > >I have tried: > >select a,b, count(*) as dups_count from some_table having dups_count > 1; > > > >and it gives me the error "Attribute 'dups_count' not found" > > You have to GROUP BY in order to use HAVING. For example: > > SELECT a,b, count(*) as dups_count FROM some_table GROUP BY a,b HAVING > dups_count > 1; My mistake for not including it in the example. I did use Group By.
Francisco Reyes wrote: >On Wed, 12 Dec 2001, Javier Dussaillant wrote: > >>At 12:54 PM 12/12/2001 -0500, Francisco Reyes wrote: >> >>>Can use use computed fields on the "having" part of select? >>>I have tried: >>>select a,b, count(*) as dups_count from some_table having dups_count > 1; >>> >>>and it gives me the error "Attribute 'dups_count' not found" >>> >>You have to GROUP BY in order to use HAVING. For example: >> >>SELECT a,b, count(*) as dups_count FROM some_table GROUP BY a,b HAVING >>dups_count > 1; >> > >My mistake for not including it in the example. I did use Group By. > Rewrite as SELECT a,b, count(*) as dups_count FROM some_table GROUP BY a,b HAVING count(*) > 1; Antonio