Preamble
PostgreSQL HAVING statement is used in combination with GROUP BY statement to limit groups of returned strings only to those whose condition is TRUE.
The syntax for the HAVING statement in PostgreSQL
SELECT expression1_id, expression2_id,. expression_n_id,
aggregate_function
FROM tabs
[WHERE conds]
GROUP BY expression1_id, expression2_id,... expression_n_id
HAVING cond;
Statement parameters and arguments
- aggregate_function – This can be an aggregate function such as sum, count, min, max, or avg.
- expression1_id, expression_2id,… expression_n_id – Expressions which are not contained in the aggregate function and must be included in the GROUP BY operator.
- WHERE conds – Optional. These are conditions for selecting records.
- HAVING cond – This is another condition applied only to aggregate results to limit groups of returned lines. Only those groups whose condition is evaluated as TRUE will be included in the result set.
Example using the sum function
Let’s consider a HAVING example that uses the sum function.
You can also use the sum function to return a department and the sum(salary) function to that department. The PostgreSQL statement HAVING will filter the results so that only departments with a total salary greater than 25000 USD will be returned.
SELECT depart, sum(salary) AS "Salaries for the department"
FROM empls
GROUP BY depart
HAVING sum(salary) > 25000;
Example using count function
Let’s see how to use the HAVING operator with the count function.
You can use the count function to return a department and the number of employees (for that department) that have “Active” status. The PostgreSQL statement HAVING will filter the results so that only departments with a maximum of 35 employees will be returned.
SELECT department, count(*) AS "Number of employees"
FROM empls
WHERE status = 'Active'
GROUP BY depart
HAVING count(*) <= 35;
Example using min function
Let’s now see how to use the HAVING operator with the min function.
You can also use the min function to return the name of each department and the minimum wage in that department. PostgreSQL operator HAVING returns only those departments where the minimum wage is less than 36000 USD.
SELECT depart, min(salary) AS "Lowest salary".
FROM empls
GROUP BY depart
HAVING min(salary) < 36000;
Example using max function
Finally, let’s consider how to use the HAVING operator with the max function.
For example, you can also use the max function to return the name of each department and the maximum salary of the department. PostgreSQL statement HAVING will return only those departments whose maximum salary is more or equal to 31950 USD.
SELECT depart, max(salary) AS "Highest salary"
FROM empls
GROUP BY depart
HAVING max(salary) >= 31950;
PostgreSQL: Group By Having | Course
About Enteros
Enteros offers a patented database performance management SaaS platform. It proactively identifies root causes of complex business-impacting database scalability and performance issues across a growing number of clouds, RDBMS, NoSQL, and machine learning database platforms.
The views expressed on this blog are those of the author and do not necessarily reflect the opinions of Enteros Inc. This blog may contain links to the content of third-party sites. By providing such links, Enteros Inc. does not adopt, guarantee, approve, or endorse the information, views, or products available on such sites.
Are you interested in writing for Enteros’ Blog? Please send us a pitch!
RELATED POSTS
Transforming Healthcare Data Systems with Intelligent Database Analytics
- 22 April 2026
- Database Performance Management
The healthcare industry is undergoing a massive digital transformation. Hospitals, clinics, research institutions, and healthcare technology companies are increasingly relying on data-driven systems to deliver faster diagnoses, improve patient outcomes, and enhance operational efficiency. From Electronic Health Records (EHR) and telemedicine platforms to AI-powered diagnostics and real-time clinical analytics, modern healthcare systems generate enormous volumes … Continue reading “Transforming Healthcare Data Systems with Intelligent Database Analytics”
Improving Retail Operations with Database Performance Analytics
The retail industry is evolving at an unprecedented pace. From omnichannel shopping experiences and personalized recommendations to AI-powered inventory management and real-time analytics, retailers now rely heavily on advanced data infrastructure. Every customer interaction—whether online, in-store, or via mobile apps—generates valuable data that must be processed quickly and efficiently. However, managing large volumes of retail … Continue reading “Improving Retail Operations with Database Performance Analytics”
How to Optimize Technology Sector Growth with Enteros Database Management Platform, Cost Attribution, and Database Software
- 21 April 2026
- Database Performance Management
Introduction The technology sector is evolving at an unprecedented pace, driven by cloud computing, artificial intelligence, SaaS platforms, and real-time digital services. Organizations are scaling rapidly to meet global demand, but with this growth comes increasing complexity in managing infrastructure, controlling costs, and maintaining high-performance systems. Technology companies today must balance innovation with efficiency. While … Continue reading “How to Optimize Technology Sector Growth with Enteros Database Management Platform, Cost Attribution, and Database Software”
How to Optimize Retail Sector Growth with Enteros Database Management Platform, AIOps, RevOps Efficiency, and Cost Estimation
The retail sector is evolving rapidly, driven by digital transformation, omnichannel experiences, and data-driven decision-making. Retailers today must deliver seamless customer experiences across online platforms, mobile apps, and physical stores—all while managing complex IT systems and rising operational costs. However, this growth comes with a fundamental challenge:how to scale efficiently while maintaining performance, controlling costs, … Continue reading “How to Optimize Retail Sector Growth with Enteros Database Management Platform, AIOps, RevOps Efficiency, and Cost Estimation”