我正在尝试使用 Python 编写查询pandasql
。我的代码如下,
import pandas as pd
from pandasql import *
data = pd.read_csv('registerlog.csv')
q = """
SELECT
a.RegistrationMonth, COUNT(DISTINCT a.UserID) AS UserSize,
COUNT(
CASE a.MonthDifference
WHEN 0.0 THEN DISTINCT a.UserID ELSE NULL
END
) AS MonthZero
FROM
data) AS a
GROUP BY
a.RegistrationMonth
"""
print sqldf(q, locals())
但这会产生以下错误,
打印 sqldf(q, locals()) 文件“C:\Python27\lib\site-packages\pandasql\sqldf.py”,第 156 行,在 sqldf 返回 PandaSQL(db_uri)(query, env) 文件“C:\Python27 \lib\site-packages\pandasql\sqldf.py",第 63 行,在 调用中 引发 PandaSQLException(ex) PandaSQLException: (sqlite3.OperationalError) 在“DISTINCT”附近:语法错误
但如果我使用WHEN 0.0 THEN a.user_id ELSE NULL
它,它会起作用。正常的方式COUNT(DISTINCT a.user_id)
也可以正常工作。
但我只想DISTINCT
获取CASE
. 有没有办法实现这一点来获得DISTINCT
里面的计数值CASE
?