我有日期和时间的条目。我希望结果按小时(00,01,02)进行分组,并且可以正常工作,但是当我想获得不同的用户数时,就会出现错误。
Select Substr(time, 0, 2) as Hour,
Count(date) as Hits,
Count(Distinct ip) as Users,
Count(Distinct X-Forwarded-For) as ForwardedUsers
From table
Group By Hour
编辑:
我正在使用Microsoft的LogParser,我能够原样使用Group By Hour
,X-Forwarded-For
也没问题。
问题是如何通过
Count(Distinct ip)
答案 0 :(得分:1)
大多数数据库引擎不允许您按别名分组。改变这个:
Group by Hour
到此:
Substr(time, 0, 2)
答案 1 :(得分:1)
不幸的是,LogParser不支持DISTINCT
聚合函数和GROUP BY
。从上面的查询得到的错误消息中可以清楚地看到这一点:
错误:语义错误:带有DISTINCT参数的聚合函数是 GROUP BY子句不支持
您可以做的一件事就是完全删除GROUP BY
子句并改为COUNT DISTINCT(hourlyIp)
,其中hourlyIp
是一个将小时与IP地址连接起来的字符串。然后,当您处理结果时,您必须将hourlyIp
字段分解回其组件。