Я пытаюсь показать общую численность населения на континенте, используя две разные таблицы с функцией запросов SQlite.
query_join = '''
SELECT countries.SUM(population) AS "total population", continents.name AS "continent name"
FROM countries, continents
WHERE countries.continent = continents.code
GROUP BY continent;
'''
result_join = pd.read_sql_query(query_join, conn_countries)
result_join
Когда я пытаюсь запустить его, я получаю следующее сообщение об ошибке:
OperationalError Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\sql.py in execute(self=<pandas.io.sql.SQLiteDatabase object>, *args=('\n SELECT countries.SUM(population) AS "total ...tinent = continents.code\n GROUP BY continent;\n',), **kwargs={})
1430 else:
-> 1431 cur.execute(*args)
cur.execute = <built-in method execute of sqlite3.Cursor object at 0x000002711B4100A0>
args = ('\n SELECT countries.SUM(population) AS "total population", continents.name AS "continent name"\n FROM countries, continents\n WHERE countries.continent = continents.code\n GROUP BY continent;\n',)
1432 return cur
OperationalError: near "(": syntax error
During handling of the above exception, another exception occurred:
DatabaseError Traceback (most recent call last)
<ipython-input-127-2ee18e8072cb> in <module>
7 GROUP BY continent;
8 '''
----> 9 result_join = pd.read_sql_query(query_join, conn_countries)
global result_join = total population continent name
0 13068161 Africa
1 0 Antarctica
2 4975593 Asia
3 84000 Europe
4 86754 North America
5 57881 Oceania
6 41343201 South America
global pd.read_sql_query = <function read_sql_query at 0x000002711A376268>
global query_join = '\n SELECT countries.SUM(population) AS "total population", continents.name AS "continent name"\n FROM countries, continents\n WHERE countries.continent = continents.code\n GROUP BY continent;\n'
global conn_countries = <sqlite3.Connection object at 0x000002711A1911F0>
10
Я считаю, что ошибка где-то в части SUM()
, так как я не получить ошибку, когда я пропущу эту часть. Проблема в том, что, если я это сделаю, он покажет
0 13068161 Africa
1 0 Antarctica
2 4975593 Asia
3 84000 Europe
4 86754 North America
5 57881 Oceania
6 41343201 South America
Что совершенно очевидно неверно.
Может кто-нибудь понять, что я делаю неправильно? Я знаю, что подобный вопрос уже задавался ранее, но я не мог понять, как применить ответы, которые были даны там, к моей собственной проблеме.
Спасибо