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

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

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

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

用于此的 Sql Server 2008R2 SQL 是什么?

格雷格

4

2 回答 2

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]
于 2013-09-18T17:21:25.103 回答
2
SELECT CreatedOn,
       COUNT(DISTINCT IP)
FROM   Table
GROUP BY CreatedOn
于 2013-09-18T17:21:34.357 回答