使用 MaxDate 列出值

List values with MaxDate

我正在尝试创建 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 

我只需要显示每个任务的最后日期。 你能帮帮我吗?

您似乎在使用 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 子句与我理解的不同,您可能希望根据您的具体要求调整该子句。


另一方面,如果您想要顶级关系,请使用 window 函数:

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 = 1