2016-06-16 4 views
0

Я уже немного работаю над этим базовым внутренним соединением, но я не могу заставить его работать. Возникает вопрос:Basic Присоединиться к mysql

Учитывая город и страны таблицы, запрашивать имена всех континентов (COUNTRY.Continent) и их соответствующего среднего городское население (CITY.Population) округляется до ближайшего целого числа.

Следующий SQL будет запрашивать среднее население города на одном континенте, но я не могу понять, как его обобщить.

SELECT DISTINCT cc.NAME, AVG(c.POPULATION) FROM 
CITY c 
INNER JOIN COUNTRY cc 
ON c.COUNTRYCODE = cc.CODE 
WHERE cc.CONTINENT = 'a continent' 
ORDER BY cc.CONTINENT; 

The City Table The Country Table

+0

You 'порядок by' не имеет смысла, потому что вы получите только один' 'cc.CONTINENT' с where' –

+0

Является ли это твоя домашняя работа? Я думаю, вы не понимаете, какую задачу вы делаете. Вы не нуждаетесь в строках страны, только на одном континенте, не так ли? –

ответ

1
SELECT cc.CONTINENT, cc.NAME, FLOOR(AVG(c.POPULATION)) AS population 
FROM CITY c 
INNER JOIN COUNTRY cc ON c.COUNTRYCODE = cc.CODE 
GROUP BY cc.CONTINENT, cc.NAME 
ORDER BY cc.CONTINENT, cc.NAME; 

Должен работать. Я предпочитаю, чтобы кодировать имена и т.д. (но это зависит от вас и личных предпочтений):

SELECT `cc`.`CONTINENT`, `cc`.`NAME`, FLOOR(AVG(`c`.`POPULATION`)) AS `population` 
FROM CITY `c` 
INNER JOIN COUNTRY `cc` ON `c`.`COUNTRYCODE` = `cc`.`CODE` 
GROUP BY `cc`.`CONTINENT`, `cc`.`NAME` 
ORDER BY `cc`.`CONTINENT`, `cc`.`NAME`; 
1

Вы хотите получить среднее население с названием страны. Таким образом, вы используете группу по запросу.

Используйте следующий запрос:

SELECT cc.NAME, FLOOR(AVG(c.POPULATION)) AS population FROM 
CITY c 
INNER JOIN COUNTRY cc 
ON c.COUNTRYCODE = cc.CODE 
WHERE cc.CONTINENT = 'a continent' 
GROUP BY cc.NAME 
ORDER BY cc.CONTINENT; 
+0

Хотя суть вашего решения ('Group by') верна, я думаю, вы пропустили часть« округленная до ближайшего целого »; также он утверждает «всех континентов», поэтому я предполагаю, что предложение «WHERE» не требуется. – RobIII

+0

Можете ли вы привести любой пример таблицы с данными? – Tony

+0

просто используйте 'FLOOR()' для этого –

1

Округлого среднее населения города составляет FLOOR(AVG(c.population))

SELECT cc.continent, FLOOR(AVG(c.population)) pop 
FROM City c 
JOIN Country cc ON cc.code = c.countrycode 
GROUP BY cc.continent 
ORDER BY cc.continent 
Смежные вопросы