在Python中运行Sqlite Case语句
我在使用CASE语句时遇到了一些问题,想要计算在一个特定范围内,某个变量等于1的事件数量。我是SQL和SQLite的新手,所以不知道该怎么解决。如果有人能帮我一下,我会非常感激。
winpct.execute("SELECT SuM(CASE WHEN PLACE=1 THEN 1 ELSE 0 END, from BASEINICIAL WHERE ID < 2 AND ID > 0 AND name = 'name')")
我有一个叫BASEINICIAL的表,我想知道有多少个变量“PLACE”等于1。而且我需要根据“id”和“name”这两个变量来选择一个范围。
2 个回答
1
你的问题其实不是出在Python上,而是出在SQLite的SQL语句上。
我建议你:
- 把你的SQL语句写得整整齐齐,这样往往能立刻发现问题
- 查阅SQLite的文档,了解你要执行的查询类型
- 在
sqlite3
控制台或者你使用的其他SQLite客户端上测试修正后的查询 - 最后,再从Python中调用它
这是你提供的重新格式化的SQL语句:
SELECT SUM(
CASE
WHEN PLACE=1
THEN 1
ELSE 0
END,
from BASEINICIAL
WHERE ID < 2 AND ID > 0 AND name = 'name')
1
你应该把你的 case
表达式的条件放到 where
子句里:
select count(PLACE)
from BASEINICIAL
where ID < 2
and ID > 0
and name = 'name'
and PLACE = 1