SELECT sge_job.j_owner AS "Owner"
,SUM(sge_job_usage.ju_cpu) AS "CPU Total"
FROM sge_job_usage, sge_job
GROUP BY j_owner;
Run Code Online (Sandbox Code Playgroud)
这是我当前的SQL查询,它只是简单地读取CPU%和作业所有者,但如果它在当前日期之间说14天(2周)之前我只能合并上面的总和.
在sge_job_usage表中属于:
ju_start_time, ju_end_time
任何人都可以帮助我如何检查它是否在当前日期之间 - 前14天然后检查end_time日期以确定它是否仍在进行中?
Answer that Outputs What I need below:
SELECT sge_job.j_owner AS "Owner"
,SUM(sge_job_usage.ju_cpu) AS "CPU Total"
FROM sge_job_usage, sge_job
WHERE ju_start_time BETWEEN LOCALTIMESTAMP - INTERVAL '1 week' AND LOCALTIMESTAMP
GROUP BY j_owner;
Run Code Online (Sandbox Code Playgroud)
bru*_*uno 12
ADC语法对PostgreSQL无效.
我不明白您希望将哪种条件应用于ju_end_date.但它应该类似于ju_start_time上的那个.
SELECT sge_job.j_owner AS "Owner"
,SUM(sge_job_usage.ju_cpu) AS "CPU Total"
FROM sge_job_usage, sge_job
WHERE sge_job_usage.C1 = sge_job.C2
AND ju_start_time BETWEEN LOCALTIMESTAMP - INTERVAL '14 days' AND LOCALTIMESTAMP
GROUP BY j_owner;
Run Code Online (Sandbox Code Playgroud)
我没有测试环境,所以我无法测试,但我认为它应该工作.
有关主题检查的更多信息
http://www.postgresql.org/docs/9.1/static/functions-datetime.html
编辑:正如所说的ypercube,你需要在两个表上加入条件.
我假设这两列都是这种DATE类型。那么你需要这样的东西:
WHERE ju_start_time BETWEEN CURRENT_DATE - INTERVAL '14 days'
AND CURRENT_DATE
AND ju_end_time >= CURRENT_DATE
Run Code Online (Sandbox Code Playgroud)
或这个(取决于您想要检查的具体条件:
WHERE ( ju_start_time, ju_end_time )
OVERLAPS
( CURRENT_DATE - INTERVAL '14 days', CURRENT_DATE )
Run Code Online (Sandbox Code Playgroud)
但该查询使用 2 个表,并且没有连接条件。它应该是:
SELECT sge_job.j_owner AS "Owner"
,SUM(sge_job_usage.ju_cpu) AS "CPU Total"
FROM sge_job_usage
JOIN sge_job
ON sge_job.SomeColumn = sge_job_usage.SomeColumn
WHERE ...
GROUP BY j_owner;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21987 次 |
| 最近记录: |