Join them and group them and calculate.
SELECT
property_id
, prop.name AS property_name
, (SUM(order_no_sqyds)/SUM(plot_no_sqyds))*100 AS percentage
, SUM(plot_no_sqyds) AS plot_no_sqyds
, SUM(order_no_sqyds) AS order_no_sqyds
, COUNT(plot_id) AS total_plots
, SUM(total_orders) AS total_orders
FROM
(
SELECT
plot.property_id
, plot.id AS plot_id
, plot.no_sqyds AS plot_no_sqyds
, SUM(ordr.no_sqyds) AS order_no_sqyds
, COUNT(DISTINCT ordr.id) AS total_orders
FROM property_plots AS plot
LEFT JOIN orders AS ordr
ON ordr.plot_id = plot.id
AND ordr.property_id = plot.property_id
GROUP BY
plot.property_id
, plot.id
, plot.no_sqyds
) q
INNER JOIN properties AS prop
ON prop.id = q.property_id
GROUP BY property_id, prop.name
ORDER BY property_id
| property_id |
property_name |
percentage |
plot_no_sqyds |
order_no_sqyds |
total_plots |
total_orders |
| 1 |
Lake View Park |
66.6667 |
225 |
150 |
3 |
4 |
Demo on db<>fiddle here
An other way to calculate it is by joining to an aggregation of the orders.
SELECT
plot.property_id
, prop.name AS property_name
, (SUM(ordr.no_sqyds)/SUM(plot.no_sqyds))*100 AS percentage
, SUM(plot.no_sqyds) AS plot_no_sqyds
, SUM(ordr.no_sqyds) AS order_no_sqyds
, COUNT(DISTINCT plot.id) AS total_plots
, SUM(total_orders) AS total_orders
FROM property_plots AS plot
INNER JOIN properties AS prop
ON prop.id = plot.property_id
LEFT JOIN (
SELECT plot_id, property_id
, SUM(no_sqyds) AS no_sqyds
, COUNT(DISTINCT id) AS total_orders
FROM orders
GROUP BY plot_id, property_id
) AS ordr
ON ordr.plot_id = plot.id
AND ordr.property_id = plot.property_id
GROUP BY
plot.property_id
, prop.name
Plots only
SELECT
plot.property_id
, plot.id AS plot_id
, (SUM(ordr.no_sqyds)/plot.no_sqyds)*100 AS percentage
, plot.no_sqyds AS plot_no_sqyds
, SUM(ordr.no_sqyds) AS order_no_sqyds
, COUNT(DISTINCT ordr.id) AS total_orders
FROM property_plots AS plot
LEFT JOIN orders AS ordr
ON ordr.plot_id = plot.id
AND ordr.property_id = plot.property_id
GROUP BY
plot.property_id
, plot.id
, plot.no_sqyds