按从日期中提取的工作日过滤查询

Filter query by weekday extracted from date

尝试从查询中的日期中提取工作日并将其用作过滤器以获取一周中每一天的平均销售额。下面的代码将给我“daily_sales.mon_avg”。我现在需要的是本周剩余时间的平均值,这样我就可以在图表中生成产品。我试着重复“func.avg(...”但无法让它工作。

daily_sales = db.session.query(Sales,
                               func.avg(Sales.sales_total).label(
                                   'mon_avg')
                               ).filter(Sales.item_id == product,
                                        Sales.trans_date <= monthly,
                                        func.extract("dow", Sales.trans_date) == 0)

或者是否有更好的方法来获取图表中使用的数据?

您是否要在 a month 中获取 each day of the weekaverage sales

daily_sales = db.session.query(func.extract("dow", Sales.trans_date).label('dow'),
                               func.avg(Sales.sales_total).label('mon_avg'))
                        .filter(Sales.item_id == product,
                                Sales.trans_date <= monthly)
                        .group_by(func.extract("dow", Sales.trans_date))
                        .all()

我自己还没有测试查询,但这应该是您要查找的内容。基本上,您应该按获得的 dow 进行分组,然后对销售额进行平均。如果您正在寻找不同的东西,请告诉我,我可以编辑答案。