An SQL clause is defined for the purpose of limiting the queried results to certain specified conditions.
GROUP BY: used in aggregation to arrange identical data into groups, the GROUP BY clause follows the WHERE clause in a SELECT statement and is followed by the ORDER BY clause
HAVING: used to specify a search condition in a GROUP BY clause, HAVING can be used in the absence of a GROUP BY clause by using a WHERE clause
ORDER BY: sorts the result set in ascending (default) or descending (using DESC keyword) order
WHERE: used to define the condition of the records to be extracted