Re: Syntax error needs explanation - Mailing list pgsql-general

From David G. Johnston
Subject Re: Syntax error needs explanation
Date
Msg-id CAKFQuwZWnGB2weH87+z4zn8mTg83rso2Cy4P2=fqqcAM9p5iWg@mail.gmail.com
Whole thread Raw
In response to Re: Syntax error needs explanation  (Rich Shepard <rshepard@appl-ecosys.com>)
Responses Re: Syntax error needs explanation [RESOLVED]
List pgsql-general
On Mon, Jul 14, 2025 at 12:59 PM Rich Shepard <rshepard@appl-ecosys.com> wrote:

The current version of the script:

select c.company_nbr, c.company_name, c.industry
from companies as c
where exists (
   select e.company_nbr
   from enforcement as e
   )
group by c.industry
order by c.industry;

And psql tells me that c.company_nbr must be in the group by clause.
However, when I do that the output is a list of company numbers and names in
each industry.

My web searches on using the exists operator haven't provided the knowlege
for me to use it properly.


Yeah, you need both to read up on aggregate queries and correlated subqueries which is typically how one makes uses of exists (it's called a semi-join in this formulation)
Not tested, but:

select c.industry, count(*)
from companies as c
where exists (
select from enforcement as e
where e.company_nbr = c.company_nbr
)
group by c.industry;

David J.


pgsql-general by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: Performance of JSON type in postgres
Next
From: Rich Shepard
Date:
Subject: Re: Syntax error needs explanation [RESOLVED]