如何按日期,IP查询唯一页面视图

时间:2013-09-18 17:19:43

标签: sql sql-server

Table
--------
Date CreatedOn
varchar(25) IP

从这张表中,我想按天选择唯一IP地址的数量。

June 1, 2013       25
June 2, 2013       35
June 3, 2013        0

注意,在原始问题之后添加了第三个项目来处理没有项目的日子。数据将变为图表/图表。

这是什么Sql Server 2008R2 SQL?

格雷格

2 个答案:

答案 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