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