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
Strengthening Financial Data Platforms with AI-Powered Database Optimization
- 24 April 2026
- Database Performance Management
The financial services industry is undergoing rapid digital transformation. From online banking and digital payments to real-time fraud detection and financial analytics, modern financial institutions rely heavily on powerful data infrastructures. Behind every financial transaction lies a complex database system that processes large volumes of data in real time. As financial platforms scale and customer … Continue reading “Strengthening Financial Data Platforms with AI-Powered Database Optimization”
Boosting E-commerce Platform Performance with AI-Driven Database Monitoring
The e-commerce industry is evolving at an unprecedented pace. From personalized shopping experiences to real-time inventory management and seamless checkout systems, modern online stores rely heavily on high-performing data infrastructures. Behind every successful e-commerce platform lies a powerful database environment that processes thousands—sometimes millions—of transactions, searches, and customer interactions every day. However, as online marketplaces … Continue reading “Boosting E-commerce Platform Performance with AI-Driven Database Monitoring”
How to Optimize Fashion Sector Growth with Enteros Database Management, AI SQL, Root Cause Analysis, and AIOps Platform
- 23 April 2026
- Database Performance Management
Introduction The fashion sector is evolving rapidly in the era of digital transformation. From fast fashion and global eCommerce platforms to personalized shopping experiences and real-time inventory systems, fashion brands are becoming increasingly data-driven. Today’s fashion companies must manage vast product catalogs, dynamic pricing strategies, omnichannel sales, and ever-changing customer preferences—all while maintaining speed, agility, … Continue reading “How to Optimize Fashion Sector Growth with Enteros Database Management, AI SQL, Root Cause Analysis, and AIOps Platform”
How to Drive Financial Sector Performance with Enteros Database Management Platform and Cloud FinOps Efficiency
Introduction The financial sector is undergoing a massive digital transformation. From real-time payments and mobile banking to AI-driven fraud detection and personalized financial services, institutions are leveraging advanced technologies to stay competitive. However, this transformation brings increasing complexity in managing IT infrastructure, ensuring high system performance, and controlling cloud costs. Financial institutions must operate in … Continue reading “How to Drive Financial Sector Performance with Enteros Database Management Platform and Cloud FinOps Efficiency”