Create a database named `B_Sons_Reg`. Then, create the following tables: `Products` and `Sales`.

Products Table
[tex]\[
\begin{tabular}{|l|l|l|}
\hline
product\_name & category & unit\_price \\
\hline
Laptop & Electronics & 500.00 \\
\hline
Smartphone & Electronics & 300.00 \\
\hline
Headphones & Electronics & 30.00 \\
\hline
Mouse & Electronics & 15.00 \\
\hline
\end{tabular}
\][/tex]

Sales Table
[tex]\[
\begin{tabular}{|c|c|c|c|c|}
\hline
sale\_id & product\_id & quantity\_sold & sale\_date & total\_price \\
\hline
1 & 101 & 5 & $2024-01-01$ & 2500.00 \\
\hline
2 & 102 & 3 & $2024-01-02$ & 900.00 \\
\hline
3 & 103 & 2 & $2024-01-02$ & 60.00 \\
\hline
4 & 104 & 4 & $2024-01-03$ & 80.00 \\
\hline
5 & 105 & 6 & $2024-01-03$ & 90.00 \\
\hline
\end{tabular}
\][/tex]

1. Retrieve the `sale_id`, `product_id`, and `total_price` from the `Sales` table for sales with a `quantity_sold` greater than 4.
2. Retrieve the `product_name` and `unit_price` from the `Products` table, ordering the results by `unit_price` in descending order.
3. Retrieve the `product_name` and `unit_price` from the `Products` table, filtering the `unit_price` to show only values between [tex]$20 and $[/tex]600.
4. Determine the average `quantity_sold` for products with a `unit_price` greater than [tex]$100.
5. Identify products with total sales exceeding $[/tex]500.



Answer :

Sure, let's walk through the solution step by step.

### 1. Create the Database and Tables

a. Create Database: Initially, you need to create a database named `B_Sons_Reg`.

b. Products Table: You will create a `Products` table that includes columns for `product_name`, `category`, and `unit_price`.

c. Sales Table: Create a `Sales` table that includes `sale_id`, `product_id`, `quantity_sold`, `sale_date`, and `total_price`.

### SQL Commands to Create Tables and Insert Data

Create the Tables:

```sql
CREATE DATABASE B_Sons_Reg;

USE B_Sons_Reg;

CREATE TABLE Products (
product_name VARCHAR(50),
category VARCHAR(50),
unit_price FLOAT
);

CREATE TABLE Sales (
sale_id INT,
product_id INT,
quantity_sold INT,
sale_date DATE,
total_price FLOAT
);
```

Insert the Data:

```sql
-- Insert data into Products table
INSERT INTO Products (product_name, category, unit_price) VALUES
('Laptop', 'Electronics', 500.00),
('Smartphone', 'Electronics', 300.00),
('Headphones', 'Electronics', 30.00),
('Mouse', 'Electronics', 15.00);

-- Insert data into Sales table
INSERT INTO Sales (sale_id, product_id, quantity_sold, sale_date, total_price) VALUES
(1, 101, 5, '2024-01-01', 2500.00),
(2, 102, 3, '2024-01-02', 900.00),
(3, 103, 2, '2024-01-02', 60.00),
(4, 104, 4, '2024-01-03', 80.00),
(5, 105, 6, '2024-01-03', 90.00);
```

### 2. Queries to Retrieve Data

a. Retrieve `sale_id`, `product_id`, and `total_price` for sales with `quantity_sold` greater than 4:

```sql
SELECT sale_id, product_id, total_price
FROM Sales
WHERE quantity_sold > 4;
```

b. Retrieve `product_name` and `unit_price` from the `Products` table, ordering the results by `unit_price` in descending order:

```sql
SELECT product_name, unit_price
FROM Products
ORDER BY unit_price DESC;
```

c. Retrieve `product_name` and `unit_price` from the `Products` table, filtering the `unit_price` to show only values between [tex]$20 and $[/tex]600:

```sql
SELECT product_name, unit_price
FROM Products
WHERE unit_price BETWEEN 20 AND 600;
```

d. Determine the average `quantity_sold` for products with a unit price greater than [tex]$100: First, keep in mind that for this computation, it refers to the sales and the reference needs to be the `unit_price`. The incorrect use of `total_price` should be adjusted: ```sql SELECT AVG(Sales.quantity_sold) FROM Sales JOIN Products ON Sales.product_id = Products.product_id WHERE Products.unit_price > 100; ``` e. Identify products with total sales exceeding $[/tex]500:

```sql
SELECT product_id, SUM(total_price)
FROM Sales
GROUP BY product_id
HAVING SUM(total_price) > 500;
```

### Explanation:

- Creating Database and Tables: SQL commands to create the database and the tables are listed above.

- Inserting Data: Necessary data is inserted into the tables.

- Query Explanations:
- Query (a): Retrieves relevant sales information where the number of items sold is more than 4.
- Query (b): Lists the products ordered by their unit price in descending order.
- Query (c): Filters the products to show only those with unit prices between [tex]$20 and $[/tex]600.
- Query (d): Calculates the average quantity sold for products priced above [tex]$100. - Query (e): Identifies products where the total sales exceed $[/tex]500.

This process collectively ensures the creation of the required database schema, population of data, and extraction of specific information based on the given conditions.