在Python中运行Sqlite Case语句

1 投票
2 回答
1264 浏览
提问于 2025-04-18 04:31

我在使用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

撰写回答