Без выборки данных трудно точно понять, что происходит, но я попытаюсь это сделать.
В вашем задании сказано, что вы должны вычислять "Среднее превышение в каждом округе Техаса, которое содержит один или более почтовый индекс с населением более 20 000 ". Давайте разберем элементы задания, которое вам нужно найти:
Average elevation
Of each county in Texas
Which has one or more zip code
With population > 20,000
И у нас есть таблица почтовых индексов с указанием округа, штата и высоты.
Итак, ОК - первая проблема: найти все почтовые индексы в Техасе:
SELECT *
FROM ZIP_CODES
WHERE STATE = 'TX'
ОК, пока все просто. Теперь ограничьте его почтовыми индексами с населением более 20 000:
SELECT *
FROM ZIP_CODES
WHERE STATE = 'TX' AND
POPULATION > 20000
Классно - но это дает нам запись для каждого почтового индекса в округе с населением> 20000. Все, что нас волнует, это отдельные лица округа, которые имеют по крайней мере один почтовый индекс с населением более 20K. Так как насчет
SELECT DISTINCT COUNTY
FROM ZIP_CODES
WHERE STATE = 'TX' AND
POPULATION > 20000
Отлично. Теперь нам нужно вычислить среднее превышение в каждом округе, возвращаемое по вышеуказанному запросу:
SELECT COUNTY, AVG(ELEVATION)
FROM ZIP_CODES
WHERE STATE = 'TX' AND
COUNTY IN (SELECT DISTINCT COUNTY
FROM ZIP_CODES
WHERE STATE = 'TX' AND
POPULATION > 20000)
GROUP BY COUNTY
ORDER BY COUNTY
И вот ваш ответ.