Table
--------
Date CreatedOn
varchar(25) IP
从这张表中,我想按天选择唯一IP地址的数量。
June 1, 2013 25
June 2, 2013 35
June 3, 2013 0
注意,在原始问题之后添加了第三个项目来处理没有项目的日子。数据将变为图表/图表。
这是什么Sql Server 2008R2 SQL?
格雷格
答案 0 :(得分:2)
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]
答案 1 :(得分:2)
SELECT CreatedOn,
COUNT(DISTINCT IP)
FROM Table
GROUP BY CreatedOn