python - 使用 SQL SELECT 语句将 SQLite 数据库转换为 Python 字典

标签 python sql sqlite dictionary group-by

已经找了好几天了。请帮忙。 我有一个 SQL 查询:

SELECT
WorkList, RecordStatus, COUNT(*) as QTY
FROM worklist_reports
WHERE WorkList IS NOT NULL
GROUP BY WorkList, RecordStatus

返回结果:

| WorkList | RecordStatus | QTY |
| -------- | ------------ | ----|
|ADM       |Closed        |41   |
|ADM       |Open          |1    |
|BIL       |Closed        |16   |
|BIL       |Hold          |1    |
|BIL       |Open          |2    |

我需要为 RecordStatus 的可能值创建新列,以便我可以将结果表折叠为:

| WorkList | Open | Closed | Hold |
| -------- | ---- | ------ | ---- |
|ADM       |1     |41      |0     |
|BIL       |2     |16      |1     |

最终的数据格式将是Python字典列表:

data = [
    {'x': 'ADM', 'open': 1, 'closed': 41, 'hold': 0}, 
    {'x': 'BIL', 'open': 2, 'closed': 16, 'hold': 1}
]

我可以根据查询结果创建字典。 我只需要知道正确的 SQL 语句来格式化查询结果。

任何帮助将不胜感激!

最佳答案

为此,您只需按 WorkList 进行分组并使用条件聚合:

SELECT WorkList, 
       SUM(RecordStatus = 'Open') AS Open,
       SUM(RecordStatus = 'Closed') AS Closed,
       SUM(RecordStatus = 'Hold') AS Hold
FROM worklist_reports
WHERE WorkList IS NOT NULL
GROUP BY WorkList;

关于python - 使用 SQL SELECT 语句将 SQLite 数据库转换为 Python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71623539/

相关文章:

python - 保存图像文件时 Flask 出现错误 "ValueError: read of closed file"

mysql - 如何选择所有连接记录都不符合条件的记录

java - 我无法使用我创建的内部类中的外部类中的数据

python - 如何计算字符串中仍适用句点和结尾的单词的出现次数

python - 启用 WhiteNoise 时,“collectstatic”命令失败

python - 加权字符串的组合 : Count the number of integer combinations with sum(integers) = m

sql - Oracle SQL Where 条件比较 varchar2 字段与数字或字符串

sql - NHibernate Profiler 无法连接到 session 和记录

java - parse.com 查询到 sqlite 查询

Android 错误 : Too many bind arguments. 提供了 1 个参数,但语句需要 0 个参数