SQL Tutorial

SQL Tutorial SQL Introduction SQL Syntax SQL Data Types SQL OPERATORS SQL COMMANDS SQL Queries

SQL Database

SQL Create Database SQL DROP Database SQL SELECT Database

SQL Table

SQL TABLE SQL CREATE TABLE SQL COPY TABLE SQL ALTER TABLE SQL DELETE SQL TRUNCATE TABLE SQL DROP TABLE SQL UPDATE TABLE SQL INSERT TABLE

SQL SELECT

SQL SELECT Statement SQL SELECT WHERE Clause SQL SELECT IN Operator SQL BETWEEN Operator SQL SELECT BETWEEN Operator SQL SELECT AND Operator SQL SELECT OR Operator SQL SELECT LIKE Operator SQL SELECT DISTINCT SQL SELECT SUM SQL SELECT MAX SQL SELECT MIN SQL SELECT AVG

SQL Clause

SQL WHERE Clause SQL GROUP BY CLAUSE SQL ORDER BY Clause SQL HAVING Clause

SQL INSERT

SQL INSERT Statement SQL INSERT INTO Statement SQL INSERT INTO Values SQL INSERT INTO SELECT SQL Insert multiple rows

SQL JOIN

SQL JOIN SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL CROSS Join

SQL OPERATOR

SQL Comparison SQL LOGICAL Operator SQL Cast Operator SQL Arithmetic

Difference

SQL vs NOSQL WHERE vs HAVING DELETE vs DROP GROUP BY vs ORDER BY DROP vs TRUNCATE SQL IN vs SQL EXISTS Difference between Delete, Drop and Truncate in SQL

MISC

SQL SubQuery SQL CASE Commit and Rollback in SQL Pattern Matching in SQL DDL Commands in SQL DML Commands in SQL Types of SQL Commands SQL COUNT SQL Primary Key SQL FOREIGN KEY SET Operators in SQL Check Constraint in SQL SQL EXCEPT SQL VIEW SQL WHERE Statement SQL CRUD Operation Where Condition in SQL TCL Commands in SQL Types of SQL JOINS SQL Nth Highest Salary SQL NOT OPERATOR SQL UNION ALL SQL INTERSECT SQL Data Definition Language SQL Data Manipulation Language SQL Data Control Language SQL CONSTRAINTS SQL Aggregate Operators SQL KEYS Codd’s Rules in SQL What is SQL Injection? Trigger In SQL SQL WHERE Multiple Conditions Truncate function in SQL SQL Formatter WEB SQL SQL Auto Increment Save Point in SQL space() function in SQL SQL Aggregate Functions SQL Topological Sorting SQL Injection SQL Cloning Tables SQL Aliases SQL Handling Duplicate Update Query in SQL Grant Command in SQL SQL SET Keyword SQL Order BY LIMIT SQL Order BY RANDOM

How To

How to use the BETWEEN operator in SQL How To Use INNER JOIN In SQL How to use LIKE in SQL How to use HAVING Clause in SQL How to use GROUP BY Clause in SQL How To Remove Duplicates In SQL How To Delete A Row In SQL How to add column in table in SQL ? How to drop a column in SQL? How to create a database in SQL? How to use COUNT in SQL? How to Create Temporary Table in SQL? How to Add Foreign Key in SQL? How to Add Comments in SQL? How To Use Group By Clause In SQL How To Use Having Clause In SQL How To Delete Column In Table How To Compare Date In SQL How index works in SQL How to calculate age from Date of Birth in SQL How to Rename Column name in SQL What are single row and multiple row subqueries?

SQL HAVING Clause

In this tutorial, we will understand the HAVING clause concept in SQL with the help of examples.

The HAVING Clause in the SQL is used as we cannot use the WHERE clause condition with the aggregate function in the queries. The HAVING clause filters the result of GROUP BY based on the specified expression. The HAVING clause work is the same as the WHERE clause work helps to apply the expression in the query, but the HAVING clause works with the groups. To filter the group result, we use the HAVING clause.

Some important points to remember before using the HAVING clause:

  1. The HAVING clause is used with the SELECT query.
  2. In the query, the HAVING clause is mentioned after the GROUP BY clause.
  3. In the query, the ORDER BY clause is mentioned at the end after the HAVING conditions
  4. We use the HAVING Clause when we have a huge record.
  5. The HAVING clause applies the filter on the data according to the condition mentioned in the query.

The syntax of the HAVING clause is as follows:

SELECT Column_Name_1, Column_Name_2, Column_Name_3, Column_Name_4, Function_Name(Column_Name) FROM Table_Name GROUP BY Column_Name HAVING condition;

The function name is the aggregate function we will use in the query. For example, SUM(), MIN(), MAX(), COUNT(), AVG().

Consider the already existing table, which has the following data:

Table Name: D_Students

Student_IdStudent_NameFirst_SemSecond_SemThird_SemFourth_SemFifth_SemSixth_SemTotalDepartment_Id
202111Vaishnavi Patil949188859592911
202112Vaibhav Lokhande859092808582862
202113Yash Dhull908894878590893
202114Sonali Patole959092889290914
202115Axar Patel858082869284851
202116Meena Mishra787580748577783
202117Mahesh Kumbhar758075788076775
202118Sakshi Patil807874788077782
202119Sopan Bhore706875758080752
202220Prajwal Lokhande808585757880814
202221Anuja Wanare858886828485855
202222Venkatesh Iyer908987909291903
202223Anushka Sen707571748078751
202224Aakash Jain807572748580784
202225Akshay Agarwal858078889082845
202226Shwetali Bhagwat908085889080861
202227Mayuri Wagh808085808285824
202228Utkarsh Rokade858080908484845
202229Manthan Koli857584788280812
202230Mayur Jain808887909290881

Example 1: Execute a query to display the student's information for a similar department id count greater than 3.

SELECT * FROM D_Students GROUP BY Department_Id HAVING COUNT(Department_Id)> 3;

We displayed the student's information whose department id count is similar, and the count is greater than 3 grouped by student_name in the above query.

The output of the above query is as follows:

Student_IdStudent_NameFirst_SemSecond_SemThird_SemFourth_SemFifth_SemSixth_SemTotalDepartment_Id
202111Vaishnavi Patil949188859592911
202112Vaibhav Lokhande859092808582862
202114Sonali Patole959092889290914
202117Mahesh Kumbhar758075788076775
HAVING Clause

Example 2: Execute a query to display students’ information where total minimum values are greater than 80 groups by student name.

SELECT * FROM D_Students GROUP BY Student_Name HAVING MIN(Total) > 80;

We displayed the student's information where the total column minimum value is greater than 80 groups by Student_Name in the above query.

The output of the above query is as follows:

Student_IdStudent_NameFirst_SemSecond_SemThird_SemFourth_SemFifth_SemSixth_SemTotalDepartment_Id
202225Akshay Agarwal858078889082845
202221Anuja Wanare858886828485855
202115Axar Patel858082869284851
202229Manthan Koli857584788280812
202230Mayur Jain808887909290881
202227Mayuri Wagh808085808285824
202220Prajwal Lokhande808585757880814
202226Shwetali Bhagwat908085889080861
202114Sonali Patole959092889290914
202228Utkarsh Rokade858080908484845
202112Vaibhav Lokhande859092808582862
202111Vaishnavi Patil949188859592911
202222Venkatesh Iyer908987909291903
202113Yash Dhull908894878590893
HAVING Clause

Example 3: Execute a query to display student’s information where the sum of the first semester to the sixth-semester column is greater than 500 groups by Student_Name.

SELECT * FROM D_Students GROUP BY Student_Name HAVING SUM(First_Sem + Second_Sem + Third_Sem + Fourth_Sem + Fifth_Sem + Sixth_Sem) > 500;

We display the student's information where the sum of the first semester to the sixth-semester column is greater than 500 groups by Student_Name in the above query.

The output of the above query is as follows:

Student_IdStudent_NameFirst_SemSecond_SemThird_SemFourth_SemFifth_SemSixth_SemTotalDepartment_Id
202225Akshay Agarwal858078889082845
202221Anuja Wanare858886828485855
202115Axar Patel858082869284851
202230Mayur Jain808887909290881
202226Shwetali Bhagwat908085889080861
202114Sonali Patole959092889290914
202228Utkarsh Rokade858080908484845
202112Vaibhav Lokhande859092808582862
202111Vaishnavi Patil949188859592911
202222Venkatesh Iyer908987909291903
202113Yash Dhull908894878590893
HAVING Clause