I'm (thoroughly) learning SQL at the moment and came across the GROUP BY
clause.
GROUP BY
aggregates or groups the resultset according to the argument(s) you give it. If you use this clause in a query you can then perform aggregate functions on the resultset to find statistical information on the resultset like finding averages (AVG())
or frequency (COUNT())
.
My question is: is the GROUP BY statement in any way useful without an accompanying aggregate function?
Update Using GROUP BY
as a synonym for DISTINCT
is (probably) a bad idea because I suspect it is slower.
You can use the GROUP BY clause without applying an aggregate function.
If you don't specify GROUP BY , aggregate functions operate over all the records selected. In that case, it doesn't make sense to also select a specific column like EmployeeID .
Oracle applies the aggregate functions to each group of rows and returns a single result row for each group. If you omit the GROUP BY clause, then Oracle applies aggregate functions in the select list to all the rows in the queried table or view.
is the GROUP BY statement in any way useful without an accompanying aggregate function?
Using DISTINCT
would be a synonym in such a situation, but the reason you'd want/have to define a GROUP BY
clause would be in order to be able to define HAVING
clause details.
If you need to define a HAVING
clause, you have to define a GROUP BY
- you can't do it in conjunction with DISTINCT
.
You can perform a DISTINCT select by using a GROUP BY without any AGGREGATES.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With