Ошибка запроса SQlite: OperationalError: near "(": синтаксическая ошибка при использовании нескольких таблиц - PullRequest
2 голосов
/ 04 марта 2020

Я пытаюсь показать общую численность населения на континенте, используя две разные таблицы с функцией запросов 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

Что совершенно очевидно неверно.

Может кто-нибудь понять, что я делаю неправильно? Я знаю, что подобный вопрос уже задавался ранее, но я не мог понять, как применить ответы, которые были даны там, к моей собственной проблеме.

Спасибо

1 Ответ

0 голосов
/ 04 марта 2020

SUM находится не в том месте. Это должно быть

SELECT SUM(countries.population)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...