首页 > 解决方案 > PandaSQLException: (sqlite3.OperationalError) 靠近 "(": 语法错误,如何解决?

问题描述

我正在尝试使用 SQL 语法查询 pandas 数据框。我导入了“import pandasql as ps”,并加载了一个数据框。然后我输入了这个简单的语法:

ps.sqldf(
    """
    SELECT department, first_name, AVG(salary) OVER (PARTITION BY department) AS average
    FROM employee
    GROUP BY department, first_name, salary
    """
    ).head()

它返回了这个错误:

PandaSQLException                         Traceback (most recent call last)
<ipython-input-6-2ecbea651075> in <module>
----> 1 ps.sqldf(
      2     """
      3     SELECT department, first_name, AVG(salary) OVER (PARTITION BY department) AS average
      4     FROM employee
      5     GROUP BY department, first_name, salary

~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandasql/sqldf.py in sqldf(query, env, db_uri)
    154     >>> sqldf("select avg(x) from df;", locals())
    155     """
--> 156     return PandaSQL(db_uri)(query, env)

~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandasql/sqldf.py in __call__(self, query, env)
     61                 result = read_sql(query, conn)
     62             except DatabaseError as ex:
---> 63                 raise PandaSQLException(ex)
     64             except ResourceClosedError:
     65                 # query returns nothing

PandaSQLException: (sqlite3.OperationalError) near "(": syntax error
[SQL: 
    SELECT department, first_name, AVG(salary) OVER (PARTITION BY department) AS average
    FROM employee
    GROUP BY department, first_name, salary
    ]
(Background on this error at: http://sqlalche.me/e/14/e3q8)

我尝试重写整个查询,从笔记本再次复制和粘贴,但仍然无法解决“(”问题。请你们告诉我如何修复 ti?

标签: pythonpandasdataframesqlitepandasql

解决方案


推荐阅读