Computer Science 3
*********
*********
Due Date: September 1, 2023
Now you need to provide me with your W3School SQL score.
Your file name should be PX_20230901_W3S_Score.png.
Be sure to drop it off into google classroom.
See example below:
 

*********
*********
 
1. We need to find the best FREE online SQL engine.
Start to google "Best Free Online SQL Engine"
We will vote and decide on the one we will use in this class.

The vote is in: 
Click here and use this online SQL.

*********
*********
Due Date: September 8, 2023

Employee Schema

Create Schema and execute commands below.

The file names will be: PX_employee_lastname (The actual SQL code.) PX_employee_lastname.mp4 (A video of the program running.) PX_employee_lastname.png (A picture of program inside the IDE.) Be sure to drop off your 3 files in google classroom. Your instructions is: A. To create a schema based on the information I gave you below. B. Add update / insert data using SQL commands to populate the tables. Review the partial schema I have below. Use the the information below. Schema without the data types set. (You need to figure out what the data types values and keys are.) departments ( department_id department_name ); CREATE TABLE employees ( employee_id first_name last_name job_id salary department_id FOREIGN KEY );

*********
*********
Due Date: September 8, 2023

B. Execute commands below successfully commands below.

1. **Retrieve All Data from a Table:**
   * Assuming you have a table named `employees`, fetch all columns and rows from it.
     ```SQL
     SELECT * FROM employees;
     ```

2. **Retrieve Specific Columns:**
   * Fetch only the `first_name` and `last_name` columns from the `employees` table.
     ```SQL
     SELECT first_name, last_name FROM employees;
     ```

3. **Filter Using WHERE:**
   * Get details of employees with a specific `job_id` (e.g., 'MANAGER').
     ```SQL
     SELECT * FROM employees WHERE job_id = 'MANAGER';
     ```

4. **Sorting Results:**
   * List employees in descending order of their `salary`.
     ```SQL
     SELECT * FROM employees ORDER BY salary DESC;
     ```

5. **Count Rows:**
   * Count the number of employees with a salary greater than 50000.
     ```SQL
     SELECT COUNT(*) FROM employees WHERE salary  >  50000;
     ```

6. **Sum, Average, Min, and Max:**
   * Find the sum, average, minimum, and maximum salary from the `employees` table.
     ```SQL
     SELECT SUM(salary), AVG(salary), MIN(salary), MAX(salary) FROM employees;
     ```

7. **Use of DISTINCT:**
   * Find the distinct job IDs from the `employees` table.
     ```SQL
     SELECT DISTINCT job_id FROM employees;
     ```

8. **Using LIKE Operator:**
   * Fetch details of employees whose name starts with 'Jo'.
     ```SQL
     SELECT * FROM employees WHERE first_name LIKE 'Jo%';
     ```

9. **Using BETWEEN:**
   * Retrieve employees whose salary is between 30000 and 50000.
     ```SQL
     SELECT * FROM employees WHERE salary BETWEEN 30000 AND 50000;
     ```

10. **Using IN Operator:**
   * Get details of employees who are in one of the following departments: 'HR', 'Finance', 'Sales'.
     ```SQL
     SELECT * FROM employees WHERE department IN ('HR', 'Finance', 'Sales');
     ```

11. **Combining Conditions with AND & OR:**
   * Find employees in the 'IT' department with a salary greater than 40000.
     ```SQL
     SELECT * FROM employees WHERE department = 'IT' AND salary > 40000;
     ```

12. **Limiting Results:**
   * Retrieve the top 5 highest-earning employees.
     ```SQL
     SELECT * FROM employees ORDER BY salary DESC LIMIT 5;
     ```

13. **Using Aggregate Functions with GROUP BY:**
   * Count employees in each department.
     ```SQL
     SELECT department, COUNT(*) FROM employees GROUP BY department;
     ```

14. **Filtering Aggregated Data with HAVING:**
   * Find departments that have more than 5 employees.
     ```SQL
     SELECT department, COUNT(*) AS num_employees FROM employees GROUP BY department HAVING num_employees > 5;
     ```

15. **Join Two Tables:**
   * Assume you have another table named `departments` with a `department_id` 
   as a primary key. Fetch employee names along with their respective department names using a JOIN operation.
     ```SQL
     SELECT e.first_name, e.last_name, d.department_name 
     FROM employees e 
     JOIN departments d ON e.department_id = d.department_id;
     ```

Remember to adjust table and column names according to your own database
schema. Also, practice is key. Keep experimenting with different queries, 
and you'll improve rapidly.