SQL Challenges-1: Execution of orders: Overall execution Rate
19. Overall execution Rate
From the following tables, write a SQL query to find the overall rate of execution of orders, which is the number of orders execution divided by the number of orders quote. Return rate_of_execution rounded to 2 decimals places.
Input:
Table: orders_issued
Structure:
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| distributor_id | int(11) | YES | |||
| company_id | int(11) | YES | |||
| quotation_date | date | YES |
Data:
| distributor_id | company_id | quotation_date |
|---|---|---|
| 101 | 202 | 2019-11-15 |
| 101 | 203 | 2019-11-15 |
| 101 | 204 | 2019-11-15 |
| 102 | 202 | 2019-11-16 |
| 102 | 201 | 2019-11-15 |
| 103 | 203 | 2019-11-17 |
| 103 | 202 | 2019-11-17 |
| 104 | 203 | 2019-11-18 |
| 104 | 204 | 2019-11-18 |
Table: orders_executed
Structure:
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| orders_from | int(11) | YES | |||
| executed_from | int(11) | YES | |||
| executed_date | date | YES |
Data:
| orders_from | executed_from | executed_date |
|---|---|---|
| 101 | 202 | 2019-11-17 |
| 101 | 203 | 2019-11-17 |
| 102 | 202 | 2019-11-17 |
| 103 | 203 | 2019-11-18 |
| 103 | 202 | 2019-11-19 |
| 104 | 203 | 2019-11-20 |
Sample Solution:
SQL Code(MySQL):
CREATE TABLE orders_issued (distributor_id int, company_id int, quotation_date date);
INSERT INTO orders_issued VALUES (101, 202, '2019-11-15');
INSERT INTO orders_issued VALUES (101, 203, '2019-11-15');
INSERT INTO orders_issued VALUES (101, 204, '2019-11-15');
INSERT INTO orders_issued VALUES (102, 202, '2019-11-16');
INSERT INTO orders_issued VALUES (102, 201, '2019-11-15');
INSERT INTO orders_issued VALUES (103, 203, '2019-11-17');
INSERT INTO orders_issued VALUES (103, 202, '2019-11-17');
INSERT INTO orders_issued VALUES (104, 203, '2019-11-18');
INSERT INTO orders_issued VALUES (104, 204, '2019-11-18');
CREATE TABLE orders_executed (orders_from int, executed_from int, executed_date date);
INSERT INTO orders_executed VALUES (101, 202, '2019-11-17');
INSERT INTO orders_executed VALUES (101, 203, '2019-11-17');
INSERT INTO orders_executed VALUES (102, 202, '2019-11-17');
INSERT INTO orders_executed VALUES (103, 203, '2019-11-18');
INSERT INTO orders_executed VALUES (103, 202, '2019-11-19');
INSERT INTO orders_executed VALUES (104, 203, '2019-11-20');
SELECT
ROUND(
IFNULL(
(SELECT COUNT(*) FROM (SELECT DISTINCT orders_from, executed_from FROM orders_executed) AS A)
/
(SELECT COUNT(*) FROM (SELECT DISTINCT distributor_id, company_id FROM orders_issued) AS B),
0)
, 2) AS rate_of_execution;
Sample Output:
rate_of_execution|
-----------------|
0.67|
Go to:
PREV : Orders items 5 or more times.
NEXT : Audience in the match.
SQL Code Editor:
Contribute your code and comments through Disqus.
