Oracle Database SQL Certified Associate
1 Introduction to SQL
1-1 Overview of SQL
1-2 History of SQL
1-3 SQL Standards
2 SQL Data Types
2-1 Numeric Data Types
2-2 Character Data Types
2-3 Date and Time Data Types
2-4 Large Object (LOB) Data Types
2-5 Miscellaneous Data Types
3 Creating and Managing Tables
3-1 Creating Tables
3-2 Modifying Tables
3-3 Dropping Tables
3-4 Table Constraints
3-5 Temporary Tables
4 Data Manipulation Language (DML)
4-1 Inserting Data
4-2 Updating Data
4-3 Deleting Data
4-4 Selecting Data
4-5 Using Subqueries
5 Data Control Language (DCL)
5-1 Granting Privileges
5-2 Revoking Privileges
6 Data Definition Language (DDL)
6-1 Creating Tables
6-2 Altering Tables
6-3 Dropping Tables
6-4 Creating Indexes
6-5 Dropping Indexes
6-6 Creating Views
6-7 Dropping Views
7 SQL Functions
7-1 Single-Row Functions
7-2 Aggregate Functions
7-3 Group Functions
7-4 Analytical Functions
8 Joins and Subqueries
8-1 Inner Joins
8-2 Outer Joins
8-3 Self-Joins
8-4 Cross Joins
8-5 Subqueries
9 Set Operators
9-1 UNION
9-2 UNION ALL
9-3 INTERSECT
9-4 MINUS
10 Grouping and Aggregation
10-1 GROUP BY Clause
10-2 HAVING Clause
10-3 ROLLUP and CUBE
10-4 GROUPING SETS
11 Transactions and Concurrency
11-1 Transaction Control Statements
11-2 Locking and Concurrency
11-3 Isolation Levels
12 Oracle SQL Developer
12-1 Overview of Oracle SQL Developer
12-2 Using SQL Worksheet
12-3 Managing Connections
12-4 Running Scripts
13 Advanced SQL Topics
13-1 Recursive Queries
13-2 Model Clause
13-3 PIVOT and UNPIVOT
13-4 Flashback Query
14 Performance Tuning
14-1 Query Optimization
14-2 Indexing Strategies
14-3 Analyzing Query Performance
15 Security and Auditing
15-1 User Management
15-2 Role Management
15-3 Auditing SQL Statements
16 Backup and Recovery
16-1 Backup Strategies
16-2 Recovery Strategies
16-3 Using RMAN
17 Oracle Database Architecture
17-1 Overview of Oracle Database Architecture
17-2 Memory Structures
17-3 Process Structures
17-4 Storage Structures
18 PLSQL Basics
18-1 Introduction to PLSQL
18-2 PLSQL Block Structure
18-3 Variables and Data Types
18-4 Control Structures
18-5 Exception Handling
19 Oracle SQL Certification Exam Preparation
19-1 Exam Objectives
19-2 Sample Questions
19-3 Practice Tests
19-4 Exam Tips
GROUP BY Clause in Oracle SQL

GROUP BY Clause in Oracle SQL

Key Concepts

1. Grouping Data

The GROUP BY clause is used to group rows that have the same values in specified columns into summary rows, like "find the number of customers in each city."

Example:

Grouping customers by city:

SELECT City, COUNT(CustomerID) AS NumberOfCustomers FROM Customers GROUP BY City;

2. Aggregating Functions

The GROUP BY clause is often used with aggregate functions like COUNT, SUM, AVG, MAX, and MIN to perform calculations on each group.

Example:

Finding the average salary by department:

SELECT DepartmentID, AVG(Salary) AS AverageSalary FROM Employees GROUP BY DepartmentID;

3. Multiple Columns

You can group by multiple columns to create more granular groups. For example, grouping by both city and state.

Example:

Grouping customers by city and state:

SELECT City, State, COUNT(CustomerID) AS NumberOfCustomers FROM Customers GROUP BY City, State;

4. HAVING Clause

The HAVING clause is used to filter groups based on a condition. It is often used with aggregate functions.

Example:

Finding departments with more than 10 employees:

SELECT DepartmentID, COUNT(EmployeeID) AS NumberOfEmployees FROM Employees GROUP BY DepartmentID HAVING COUNT(EmployeeID) > 10;

5. ORDER BY Clause

The ORDER BY clause can be used to sort the grouped results. It is typically placed after the GROUP BY and HAVING clauses.

Example:

Sorting departments by the number of employees in descending order:

SELECT DepartmentID, COUNT(EmployeeID) AS NumberOfEmployees FROM Employees GROUP BY DepartmentID ORDER BY NumberOfEmployees DESC;

6. NULL Values

The GROUP BY clause treats NULL values as a single group. This can be useful for identifying missing or undefined data.

Example:

Grouping customers by city, including those with no city specified:

SELECT City, COUNT(CustomerID) AS NumberOfCustomers FROM Customers GROUP BY City;

7. Subqueries with GROUP BY

The GROUP BY clause can be used in subqueries to perform complex queries that involve grouping and filtering.

Example:

Finding the top 5 departments with the highest average salary:

SELECT DepartmentID, AverageSalary FROM (SELECT DepartmentID, AVG(Salary) AS AverageSalary FROM Employees GROUP BY DepartmentID) ORDER BY AverageSalary DESC FETCH FIRST 5 ROWS ONLY;

8. Combining GROUP BY with JOIN

The GROUP BY clause can be combined with JOIN operations to group data from multiple tables.

Example:

Grouping sales by product and calculating the total sales amount:

SELECT p.ProductName, SUM(s.SalesAmount) AS TotalSales FROM Sales s JOIN Products p ON s.ProductID = p.ProductID GROUP BY p.ProductName;

9. ROLLUP and CUBE

The ROLLUP and CUBE extensions of the GROUP BY clause provide additional grouping options for generating subtotals and grand totals.

Example:

Using ROLLUP to generate subtotals by department and city:

SELECT DepartmentID, City, COUNT(EmployeeID) AS NumberOfEmployees FROM Employees GROUP BY ROLLUP(DepartmentID, City);

10. Performance Considerations

Using the GROUP BY clause can impact query performance, especially with large datasets. It is important to optimize queries and consider indexing strategies to ensure efficient execution.

Example:

Optimizing a query by creating an index on the grouping column:

CREATE INDEX idx_departmentid ON Employees(DepartmentID);