Table
--------
Date CreatedOn
varchar(25) IP
从这个表中,我想按天选择唯一 IP 地址的数量。
June 1, 2013 25
June 2, 2013 35
June 3, 2013 0
请注意,在原始问题之后添加了第三项,以处理没有项目的日子。数据将变成图表/图形。
用于此的 Sql Server 2008R2 SQL 是什么?
格雷格
Table
--------
Date CreatedOn
varchar(25) IP
从这个表中,我想按天选择唯一 IP 地址的数量。
June 1, 2013 25
June 2, 2013 35
June 3, 2013 0
请注意,在原始问题之后添加了第三项,以处理没有项目的日子。数据将变成图表/图形。
用于此的 Sql Server 2008R2 SQL 是什么?
格雷格
SELECT Date, COUNT(*)
FROM TableName
GROUP BY Date
ORDER BY date
如果你想有唯一的计数,你需要有DISTINCT
,例如。COUNT(DISTINCT IP)
.
追问:有没有看不到的日期?你打算用它做什么?
由于您想根据您的评论显示两个日期范围之间的所有日期,因此您需要有一个日历表或生成日期范围之间所有日期的东西。
-- let's say
-- start date = June 1, 2013
-- end date = June 5, 2013
WITH DateTimeSequence
AS
(
SELECT CAST('20130601' as datetime) AS [datetime] -- Start Date
UNION ALL
SELECT DATEADD(d, 1, [datetime])
FROM DateTimeSequence
WHERE DATEADD(d, 1, [datetime]) <= CAST('20130605' as datetime) -- End Date
)
SELECT a.[datetime],
COUNT(DISTINCT b.[ipaddress]) uniqueIP_Count
FROM DateTimeSequence a
LEFT JOIN TableName b
ON a.[datetime] = b.[date]
GROUP BY a.[datetime]
SELECT CreatedOn,
COUNT(DISTINCT IP)
FROM Table
GROUP BY CreatedOn