我试图创建ie查询,以显示它与最大日期,但我不知道如何!按照脚本和结果执行:
Select
results.severity As "Count_severity",
tasks.name As task,
results.host,
to_timestamp(results.date)::date
From
tasks Inner Join
results On results.task = tasks.id
Where
tasks.name Like '%CORP 0%' And
results.severity >= 7 And
results.qod > 70 我只需要显示每个任务的最后一个日期。你能帮我吗?


发布于 2020-11-21 22:21:51
您似乎在使用Postgres (正如使用强制转换操作符::所建议的)。如果是这样的话--我正确地理解了--你可以使用distinct on
select distinct on(t.name)
r.severity, t.name as task, r.host, to_timestamp(r.date::bigint)::date
from tasks t
inner join results r on r.task = t.id
where t.name like '%corp 0%' and r.severity >= 7 and r.qod > 70
order by t.name, to_timestamp(r.date::bigint)::date desc这只保证每个任务有一行;选择哪一行由order by子句控制,因此上面的行得到了最大的date (时间部分被分开)。如果有联系,则未定义返回哪一行。如果order by子句与我所理解的不同,您可能希望将它调整为您的确切需求。
另一方面,如果您想要顶级领带,请使用窗口函数:
select *
from (
select r.severity, t.name as task, r.host, to_timestamp(r.date::bigint)::date,
rank() over(partition by t.name order by to_timestamp(r.date::bigint)::date desc) rn
from tasks t
inner join results r on r.task = t.id
where t.name like '%corp 0%' and r.severity >= 7 and r.qod > 70
) t
where rn = 1https://stackoverflow.com/questions/64948657
复制相似问题