2013-01-21 53 views
0

对不起,我无法想出一个更好的标题。SQL Server每分钟行数

我有一张表,每次有人打我的JSON API时插入一行。本质上它有2列,Ipaddressnvarchar)和datedatetimeoffset)。

我的问题的一部分是,我不确定如何定义我想要的数据,但总体上我试图找出是否有人在我的api上玩shenanigans。

我认为我在寻找的是每ip地址每秒/分钟的平均请求数。

任何人都可以帮我写一个查询吗?

+0

你应该定义什么是“扮演诡计”对你来说。 (是每分钟10,20,50个请求吗?取决于你有什么类型的应用程序) –

回答

0

今天看到,通过IP,每分钟:

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 

你可以进一步推导从数据的平均值,并根据您认为什么是指示“恶作剧”的过滤器...

+0

谢谢,这让我指出了正确的方向。你能否详细说明你为什么使用CTE来做这件事?看起来我可以运行一个非常类似的查询而没有一个。我只是因为我以前从未使用CTE而想要了解更多。谢谢。 – Erick

+0

@Erick只是偏爱更现代的风格,当你有多个子查询而不是一个子查询时,它更容易被接受。您可以轻松地将所有内容从CTE中取出并插入到'FROM'和'x'之间。 –