对不起,我想不出更好的标题。
我有一个表,每次有人点击我的 JSON api 时都会插入一行。本质上,它有 2 列,Ipaddress
( nvarchar
) 和date
( datetimeoffset
)。
我的部分问题是,我不确定如何定义我想要的数据,但总的来说,我试图弄清楚是否有人在我的 api 上玩恶作剧。
我认为我正在寻找的是每个 IP 地址每秒/分钟的平均请求数。
谁能帮我写一个这样的查询?
对不起,我想不出更好的标题。
我有一个表,每次有人点击我的 JSON api 时都会插入一行。本质上,它有 2 列,Ipaddress
( nvarchar
) 和date
( datetimeoffset
)。
我的部分问题是,我不确定如何定义我想要的数据,但总的来说,我试图弄清楚是否有人在我的 api 上玩恶作剧。
我认为我正在寻找的是每个 IP 地址每秒/分钟的平均请求数。
谁能帮我写一个这样的查询?
To see today, by IP, per minute:
DECLARE @day DATE = CURRENT_TIMESTAMP;
WITH x AS (
SELECT Ipaddress, m = DATEADD(MINUTE, DATEDIFF(MINUTE, @day, [date]), @day)
FROM dbo.tablename
WHERE CONVERT(DATE, [date]) = @day
)
SELECT Ipaddress, m, c = COUNT(*)
FROM x
GROUP BY Ipaddress m
ORDER BY c DESC; -- OR ORDER BY m
You could further derive averages from that data and filter depending on what you consider to be indicative of "shenanigans"...