The GROUP BY
and ORDER BY
clauses can reference the selected columns by number in which they appear in the SELECT
statement. The example query will count the number of movies per rating, and will:
GROUP BY
column 2
(rating
)ORDER BY
column 1
(total_movies
)SELECT COUNT(*) AS 'total_movies',ratingFROM moviesGROUP BY 2ORDER BY 1;
SUM()
Aggregate FunctionThe SUM()
aggregate function takes the name of a column as an argument and returns the sum of all the value in that column.
SELECT SUM(salary)FROM salary_disbursement;
MAX()
Aggregate FunctionThe MAX()
aggregate function takes the name of a column as an argument and returns the largest value in a column. The given query will return the largest value from the amount
column.
SELECT MAX(amount)FROM transactions;
COUNT()
Aggregate FunctionThe COUNT()
aggregate function returns the total number of rows that match the specified criteria. For instance, to find the total number of employees who have less than 5 years of experience, the given query can be used.
Note: A column name of the table can also be used instead of *
. Unlike COUNT(*)
, this variation COUNT(column)
will not count NULL
values in that column.
SELECT COUNT(*)FROM employeesWHERE experience < 5;
GROUP BY
ClauseThe GROUP BY
clause will group records in a result set by identical values in one or more columns. It is often used in combination with aggregate functions to query information of similar records. The GROUP BY
clause can come after FROM
or WHERE
but must come before any ORDER BY
or LIMIT
clause.
The given query will count the number of movies per rating.
SELECT rating,COUNT(*)FROM moviesGROUP BY rating;
MIN()
Aggregate FunctionThe MIN()
aggregate function returns the smallest value in a column. For instance, to find the smallest value of the amount
column from the table named transactions
, the given query can be used.
SELECT MIN(amount)FROM transactions;
AVG()
Aggregate FunctionThe AVG()
aggregate function returns the average value in a column. For instance, to find the average salary
for the employees who have less than 5 years of experience, the given query can be used.
SELECT AVG(salary)FROM employeesWHERE experience < 5;
HAVING
ClauseThe HAVING
clause is used to further filter the result set groups provided by the GROUP BY
clause. HAVING
is often used with aggregate functions to filter the result set groups based on an aggregate property. The given query will select only the records (rows) from only years where more than 5 movies were released per year.
The HAVING
clause must always come after a GROUP BY
clause but must come before any ORDER BY
or LIMIT
clause.
SELECT year,COUNT(*)FROM moviesGROUP BY yearHAVING COUNT(*) > 5;
Aggregate functions perform a calculation on a set of values and return a single value:
COUNT()
SUM()
MAX()
MIN()
AVG()
ROUND()
FunctionThe ROUND()
function will round a number value to a specified number of places. It takes two arguments: a number, and a number of decimal places. It can be combined with other aggregate functions, as shown in the given query. This query will calculate the average rating of movies from 2015, rounding to 2 decimal places.
SELECT year,ROUND(AVG(rating), 2)FROM moviesWHERE year = 2015;