Sql 如何在不分块的情况下按周分组(查询\u跟踪\u4周)
我有一个工作数据库,我想在过去的一个月里每周统计一下。执行我当前的查询,但它按日历周而不是我想要的后续周进行分块:Sql 如何在不分块的情况下按周分组(查询\u跟踪\u4周),sql,postgresql,datetime,group-by,Sql,Postgresql,Datetime,Group By,我有一个工作数据库,我想在过去的一个月里每周统计一下。执行我当前的查询,但它按日历周而不是我想要的后续周进行分块: SELECT date_trunc('week', scheduled_for::date) AS weekly, COUNT(*) FROM jobs_job WHERE state = 'complete' AND scheduled_for > NOW() - INTERVAL '1 month' GROUP BY weekly ORDER
SELECT date_trunc('week', scheduled_for::date) AS weekly,
COUNT(*)
FROM jobs_job WHERE state = 'complete' AND scheduled_for > NOW() - INTERVAL '1 month'
GROUP BY weekly
ORDER BY weekly;
如何更改此设置,使每个“每周”周期正好为7天?您可能需要使用
你可能想用它
我想你需要以天为单位的日期差,然后除以7来定义周。这将是:
SELECT scheduled_for::date + floor((current_date - scheduled_for::date) / 7) * interval '1 week' AS weekly,
COUNT(*)
FROM jobs_job WHERE state = 'complete' AND scheduled_for > NOW() - INTERVAL '1 month'
GROUP BY weekly
ORDER BY weekly;
我想你需要以天为单位的日期差,然后除以7来定义周。这将是:
SELECT scheduled_for::date + floor((current_date - scheduled_for::date) / 7) * interval '1 week' AS weekly,
COUNT(*)
FROM jobs_job WHERE state = 'complete' AND scheduled_for > NOW() - INTERVAL '1 month'
GROUP BY weekly
ORDER BY weekly;
向我们显示数据库模式、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。尝试在Show us db schema、示例数据、当前和预期输出中创建一个示例。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。试着在一周内创建一个样本,但通常只有这一周是不明智的。我通常将其与提取(从当前日期算起的isoyear)相结合,以准备返回两年汉克斯值的查询!还有一匹没有名字的马!我尝试运行此命令,但似乎无法识别EXTRACT命令。。我们确实在运行Postgres(我们使用Redash作为客户端),但它不识别该命令。也许我们正在运行一个不同版本的Postgres?我的导师不懂SQL,我无法打开任何与此相关的谷歌搜索。如果有人知道会出什么问题,请告诉我@whrobbins:如果你正在运行Postgres,那么
extract(isoyear from…)。什么是选择版本()代码>给你?@a_horse_,没有名字选择版本()代码>给了我:x86_64-pc-linux-gnu(Ubuntu 9.6.8-1.pgdg14.04+1)上的PostgreSQL 9.6.8,由gcc(Ubuntu 4.8.4-2ubuntu1~14.04.4)4.8.4编译,64位
。当我运行查询时,我得到Error running query:syntax Error位于或接近“as”行11:groupby EXTRACT(isoyear FROM scheduled_for)as year,^
,它指的是groupby
行。我试着将
的预定时间设置为一个日期
,但没有效果。。在Redash中,extract
关键字表示“local”,而不是我所关心的“keyword”。这不是答案中使用的语法。您不能通过在组中指定一个表达式,因为通常只有一周是不合理的。我通常将其与提取(从当前日期算起的isoyear)
相结合,以准备返回两年汉克斯值的查询!还有一匹没有名字的马!我尝试运行此命令,但似乎无法识别EXTRACT命令。。我们确实在运行Postgres(我们使用Redash作为客户端),但它不识别该命令。也许我们正在运行一个不同版本的Postgres?我的导师不懂SQL,我无法打开任何与此相关的谷歌搜索。如果有人知道会出什么问题,请告诉我@whrobbins:如果你正在运行Postgres,那么extract(isoyear from…)。什么是选择版本()代码>给你?@a_horse_,没有名字选择版本()代码>给了我:x86_64-pc-linux-gnu(Ubuntu 9.6.8-1.pgdg14.04+1)上的PostgreSQL 9.6.8,由gcc(Ubuntu 4.8.4-2ubuntu1~14.04.4)4.8.4编译,64位
。当我运行查询时,我得到Error running query:syntax Error位于或接近“as”行11:groupby EXTRACT(isoyear FROM scheduled_for)as year,^
,它指的是groupby
行。我试着将
的预定时间设置为一个日期
,但没有效果。。在Redash中,extract
关键字表示“local”,而不是我所关心的“keyword”。这不是答案中使用的语法。您不能通过as
在group by
中提供别名的表达式,谢谢!我运行了这个,它似乎不像我所期望的那样分组。我问过我的实习经理,但他没有足够的SQL经验来理解这一点。分组似乎失败了。(我们将日期四舍五入至最接近的15分钟增量)@罗宾斯。答案中有一个输入错误。谢谢更新!使用::date
附加组件获得了很好的效果。我尝试运行它并得到以下结果:。每天应该只有一小部分元素需要计算,但它在做一些奇怪的事情。它看起来也不像是每个日期的一个滚动总和,因为count
之间的变化很大。如果您有任何想法,请告诉我-我被难住了。如果您包含一些示例数据和预期输出,将非常有帮助。现在,我们只是猜测,令人沮丧的是,当你说在你这方面不起作用,并期望我们修复时,不给我们所有的信息。谢谢!我运行了这个,它似乎不像我所期望的那样分组。我问过我的实习经理,但他没有足够的SQL经验来理解这一点。分组似乎失败了。(我们将日期四舍五入至最接近的15分钟增量)@罗宾斯。答案中有一个输入错误。谢谢更新!使用::date
附加组件获得了很好的效果。我尝试运行它并得到以下结果:。每天应该只有一小部分元素需要计算,但它在做一些奇怪的事情。它看起来也不像是每个日期的一个滚动总和,因为count
之间的变化很大。如果您有任何想法,请告诉我-我被难住了。如果您包含一些示例数据和预期输出,将非常有帮助。现在我们只是猜测,令人沮丧的是,当你说在你这方面不起作用,并期望我们修复时,不给我们所有的信息。