Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在不分块的情况下按周分组(查询\u跟踪\u4周)_Sql_Postgresql_Datetime_Group By - Fatal编程技术网

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
之间的变化很大。如果您有任何想法,请告诉我-我被难住了。如果您包含一些示例数据和预期输出,将非常有帮助。现在我们只是猜测,令人沮丧的是,当你说在你这方面不起作用,并期望我们修复时,不给我们所有的信息。