SQL HAVING Clause

Having clause is used with the select clause to specify a search
condition for a group or aggregate. The HAVING clause works with where
clause, but it is implied on group only-represent the rows in the result set.
The Where clause is applicable to individual rows.
Create Table Stu_Table
The Tutorial illustrates an example from SQL
HAVING Clause. In this example, we create a table 'Stu_Table'. The create
table statement is used to create a table Stu_Table.
SQL statement to create table:
create table Stu_Table(Stu_Id varchar(2), Stu_Name varchar(15),
Stu_Class varchar(10), sub_id varchar(2), marks varchar(3));
|
Insert Data into Stu_Table
The insert into add a rows or records to a
table 'Stu_Table'.
SQL statement to insert data into table:
insert into Stu_Table values(1,'Komal',10,1,45);
insert into Stu_Table values(2,'Ajay',10,1,56);
insert into Stu_Table values(3,'Rakesh',10,1,67);
insert into Stu_Table values(1,'Komal',10,2,47);
insert into Stu_Table values(2,'Ajay',10,2,53);
insert into Stu_Table values(3,'Rakesh',10,2,57);
insert into Stu_Table values(1,'Komal',10,3,45);
insert into Stu_Table values(2,'Ajay',10,3,56);
insert into Stu_Table values(3,'Rakesh',10,3,67);
insert into Stu_Table values(1,'Komal',10,4,65);
insert into Stu_Table values(2,'Ajay',10,4,56);
insert into Stu_Table values(3,'Rakesh',10,4,37);
insert into Stu_Table values(1,'Komal',10,5,65);
insert into Stu_Table values(2,'Ajay',10,5,46);
insert into Stu_Table values(3,'Rakesh',10,5,63);
|
Stu_Table
The select return you the records from a
table 'Stu_Table'.
Records in the table:
+--------+----------+-----------+--------+-------+
| Stu_Id | Stu_Name | Stu_Class | sub_id | marks |
+--------+----------+-----------+--------+-------+
| 1 | Komal | 10 | 1 | 45 |
| 2 | Ajay | 10 | 1 | 56 |
| 3 | Rakesh | 10 | 1 | 67 |
| 1 | Komal | 10 | 2 | 47 |
| 2 | Ajay | 10 | 2 | 53 |
| 3 | Rakesh | 10 | 2 | 57 |
| 1 | Komal | 10 | 3 | 45 |
| 2 | Ajay | 10 | 3 | 56 |
| 3 | Rakesh | 10 | 3 | 67 |
| 1 | Komal | 10 | 4 | 65 |
| 2 | Ajay | 10 | 4 | 56 |
| 3 | Rakesh | 10 | 4 | 37 |
| 1 | Komal | 10 | 5 | 65 |
| 2 | Ajay | 10 | 5 | 46 |
| 3 | Rakesh | 10 | 5 | 63 |
+--------+----------+-----------+--------+-------+
|
Query
The SQL Syntax is used to retrieve the name of
the candidate whose average score is greater than 50.The HAVING
clause restrict your records from a table. The group by statement
is used with the SQL aggregate functions to group the retrieved data
based upon one or more columns.
select stu_id, stu_name, GROUP_CONCAT(marks) as marks,
sum(marks)as total ,avg(marks) as per
from stu_table group by stu_id HAVING avg(marks)>50;
|
Result
+--------+----------+----------------+-------+------+
| stu_id | stu_name | marks | total | per |
+--------+----------+----------------+-------+------+
| 1 | Komal | 45,65,47,65,45 | 267 | 53.4 |
| 2 | Ajay | 46,56,56,53,56 | 267 | 53.4 |
| 3 | Rakesh | 67,57,37,67,63 | 291 | 58.2 |
+--------+----------+----------------+-------+------+
|
Query
select stu_id, stu_name,GROUP_CONCAT(marks) as marks,
sum(marks)as total ,avg(marks) as per
from stu_table group by stu_id HAVING avg(marks)>55;
|
Result
+--------+----------+----------------+-------+------+
| stu_id | stu_name | marks | total | per |
+--------+----------+----------------+-------+------+
| 3 | Rakesh | 67,57,37,67,63 | 291 | 58.2 |
+--------+----------+----------------+-------+------+
|

|