SQLite 数据库到 Python 字典使用 SQL SELECT 语句
SQLite Database to Python Dictionary using SQL SELECT statement
已经搜索了好几天了。请帮忙。
我有一个 SQL 查询:
SELECT
WorkList, RecordStatus, COUNT(*) as QTY
FROM worklist_reports
WHERE WorkList IS NOT NULL
GROUP BY WorkList, RecordStatus
哪个returns:
| WorkList | RecordStatus | QTY |
| -------- | ------------ | ----|
|ADM |Closed |41 |
|ADM |Open |1 |
|BIL |Closed |16 |
|BIL |Hold |1 |
|BIL |Open |2 |
我需要为 RecordStatus 的可能值创建新列,这样我就可以将结果 table 折叠成这样:
| 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;
您也可以保持查询不变,然后使用 pandas 将其转换为您喜欢的记录列表
import pandas as pd
df = pd.DataFrame({
"WorkList": ["ADM", "ADM", "BIL", "BIL", "BIL"],
"RecordStatus": ["Closed", "Open", "Closed", "Hold", "Open"],
"QTY": [41, 1, 16, 1, 2]
})
list_records = df.pivot(
index="WorkList", columns="RecordStatus", values="QTY"
).fillna(0).astype(int).reset_index().to_dict(orient='records')
list_records
[{'WorkList': 'ADM', 'Closed': 41, 'Hold': 0, 'Open': 1}, {'WorkList': 'BIL', 'Closed': 16, 'Hold': 1, 'Open': 2}]
已经搜索了好几天了。请帮忙。 我有一个 SQL 查询:
SELECT
WorkList, RecordStatus, COUNT(*) as QTY
FROM worklist_reports
WHERE WorkList IS NOT NULL
GROUP BY WorkList, RecordStatus
哪个returns:
| WorkList | RecordStatus | QTY |
| -------- | ------------ | ----|
|ADM |Closed |41 |
|ADM |Open |1 |
|BIL |Closed |16 |
|BIL |Hold |1 |
|BIL |Open |2 |
我需要为 RecordStatus 的可能值创建新列,这样我就可以将结果 table 折叠成这样:
| 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;
您也可以保持查询不变,然后使用 pandas 将其转换为您喜欢的记录列表
import pandas as pd
df = pd.DataFrame({
"WorkList": ["ADM", "ADM", "BIL", "BIL", "BIL"],
"RecordStatus": ["Closed", "Open", "Closed", "Hold", "Open"],
"QTY": [41, 1, 16, 1, 2]
})
list_records = df.pivot(
index="WorkList", columns="RecordStatus", values="QTY"
).fillna(0).astype(int).reset_index().to_dict(orient='records')
list_records
[{'WorkList': 'ADM', 'Closed': 41, 'Hold': 0, 'Open': 1}, {'WorkList': 'BIL', 'Closed': 16, 'Hold': 1, 'Open': 2}]