【发布时间】:2020-03-03 02:43:27
【问题描述】:
我是 Python 和 SQL Alchemy 的新手,我有一个关于我正在尝试执行的查询的问题。
更具体地说,我有这个数据列表。它每 5 分钟包含一些措施。 我想做的是按时间戳分组,基于 30 分钟,所以当:
- 00:15:00+00 -> 00:00:00+00
- 00:20:00+00 -> 00:00:00+00
- 00:30:00+00 -> 00:30:00+00
- 00:35:00+00 -> 00:30:00+00
- 等
然后聚合关于该值的数据。
现在我有以下代码:
base_query = (
db.query(
MyTable.timestamp,
func.max(MyTable.dual).label("max"),
func.min(MyTable.dual).label("min"),
func.avg(MyTable.dual).label("avg"),
func.count(MyTable.id).label("count"),
)
.join(Simulation, Simulation.id == MyTable.simulation_id)
.filter(
and_(MyTable.dual > 0, Simulation.scenario_id == scenario_id)
)
.group_by(MyTable.timestamp)
.order_by(MyTable.timestamp)
)
timestamp count avg
"2020-01-13 00:00:00+00" "10" "6454.70683325249"
"2020-01-13 00:05:00+00" "10" "6454.70683325249"
"2020-01-13 00:10:00+00" "10" "6454.70683325249"
"2020-01-13 00:15:00+00" "10" "6454.70683325249"
"2020-01-13 00:20:00+00" "10" "6454.70683325249"
"2020-01-13 00:25:00+00" "10" "6454.70683325249"
"2020-01-13 00:30:00+00" "10" "6454.70683325249"
"2020-01-13 00:35:00+00" "10" "6454.70683325249"
"2020-01-13 00:40:00+00" "10" "6454.70683325249"
"2020-01-13 00:45:00+00" "10" "6454.70683325249"
"2020-01-13 00:50:00+00" "10" "6454.70683325249"
"2020-01-13 00:55:00+00" "10" "6454.70683325249"
"2020-01-13 01:00:00+00" "10" "6454.70683325249"
"2020-01-13 01:05:00+00" "10" "6454.70683325249"
"2020-01-13 01:10:00+00" "10" "6454.70683325249"
"2020-01-13 01:15:00+00" "10" "6454.70683325249"
【问题讨论】:
-
你用的是什么数据库?
-
Postgres。对不起,我忘了提到它
-
另见 this answer 使用 postgres 的间隔功能
标签: python postgresql datetime sqlalchemy