Поскольку все, кажется, имеют cid , просто JOIN
каждый набор результатов:
SELECT educ.cid, educ.educ_res, econ.econ_res, clim.climate_res, crime.crime_res
FROM
(SELECT LEAST((HSDIPLOMA + BACHELORDEGREE) /
AVG(HSDIPLOMA + BACHELORDEGREE) OVER (), 1) AS educ_res
FROM EDUCATIONPROFILE
) educ
INNER JOIN
(SELECT LEAST((EMPLOYED - UNEMPLOYED) /
AVG(EMPLOYED - UNEMPLOYED) OVER (), 1) AS econ_res
FROM ECONOMICPROFILE
) econ
ON educ.cid = econ.cid
INNER JOIN
(SELECT ((MAXTEMP + MINTEMP)/ 2)/
(SELECT MAX((MAXTEMP + MINTEMP)/ 2) FROM CLIMATEPROFILE) AS climate_res
FROM CLIMATEPROFILE
) clim
ON clim.cid = educ.cid
INNER JOIN
(SELECT (crimecount) / (SELECT MAX(CRIMECOUNT) FROM CRIMECOUNTS) AS crime_res
FROM CRIMECOUNTS
) crime
ON crime.cid = educ.cid
ORDER BY educ.cid
В качестве альтернативы с CTE:
WITH educ AS
(SELECT LEAST((HSDIPLOMA + BACHELORDEGREE) /
AVG(HSDIPLOMA + BACHELORDEGREE) OVER (), 1) AS educ_res
FROM EDUCATIONPROFILE
),
econ AS
(SELECT LEAST((EMPLOYED - UNEMPLOYED) /
AVG(EMPLOYED - UNEMPLOYED) OVER (), 1) AS econ_res
FROM ECONOMICPROFILE
),
clim AS
(SELECT ((MAXTEMP + MINTEMP)/ 2)/
(SELECT MAX((MAXTEMP + MINTEMP)/ 2) FROM CLIMATEPROFILE) AS climate_res
FROM CLIMATEPROFILE
),
crime AS
(SELECT (crimecount) / (SELECT MAX(CRIMECOUNT) FROM CRIMECOUNTS) AS crime_res
FROM CRIMECOUNTS
)
SELECT educ.cid, educ.educ_res, econ.econ_res, clim.climate_res, crime.crime_res
FROM educ
INNER JOIN econ
ON educ.cid = econ.cid
INNER JOIN clim
ON clim.cid = educ.cid
INNER JOIN crim
ON crime.cid = educ.cid
ORDER BY educ.cid