首页 > 解决方案 > GROUP BY 中的非整数常量

问题描述

DataFrame我有以下代码行应该从 SQL 查询构建 Pandas :

query_epd = pandas.read_sql_query("SELECT 'Department', COUNT('LastName') FROM thestaff.employees GROUP BY 'Department'", engine)

然而,当我运行我的代码时,这一行给了我错误:

SyntaxError: non-integer constant in GROUP BY
LINE 1: ...OUNT('LastName') FROM thestaff.employees GROUP BY 'Departmen...
                                                             ^

我看不到我在哪里或如何使用常量,整数与否,这对我来说是 MSSQL 上的一个非常标准的查询,但在 PostgreSQL 和 Pandas 下运行这个查询是无效的。我的查询有什么问题?

标签: pythonsqlpandaspostgresqlpsql

解决方案


标识符周围的单引号将它们转换为文字字符串,这可能不是您想要的。您应该将此查询编写为:

SELECT department, COUNT(*) no_emp
FROM thestaff.employees 
GROUP BY department 

如果您的标识符区分大小写,那么您需要用双引号将它们括起来(这是 Postgres 遵守的 SQL 标准)。

请注意,我更改COUNT(lastname)COUNT(*): 除非您null在列中有值,否则lastname这是等效的,并且更有效。我还在结果集中为该列指定了一个别名。


推荐阅读