有一个表(查询)用于跟踪对数据库进行的每个查询,其中包含日期时间戳和计算机名称。
同一台计算机可以有 1000 行,每行都有不同的 date_time 时间戳。
如果计算机在60天内没有进行过查询,那么就需要进行识别。
我知道如何检查每条记录,看看该特定查询记录的时间是否超过 60 天。
我不知道如何考虑该特定计算机的所有记录来确定最小日期时间戳是否大于 60 天,如果是,则将其显示在结果中。
请原谅我是 SQL 查询新手。 谢谢。
我尝试过:
从 date_time > 20240508000000 的查询中选择计算机名称
我只想显示计算机名称,如果它没有少于 60 天的单个记录 - 因为这意味着它在 2 个月内没有用于查询并且需要识别。
上面的示例是错误的,因为它将显示大于 60 天的所有记录。
在没有测试任何东西的情况下,我建议这样做。这个想法是获取每台计算机的最年轻时间戳,然后过滤那些最年轻时间戳与现在相比超过 60 天的计算机 (GETDATE())。
SELECT
computername
,youngest = MAX(timestamp)
FROM Queries
GROUP BY computername
HAVING DATEDIFF(DAY, MAX(timestamp), GETDATE()) > 60