使用avg(count())函数

时间:2013-09-26 04:27:49

标签: sql oracle

在dns日志表中,尝试使用此查询获取平均值。一天内dns查询的数量:

select to_char(log_time, 'DD-MM-YYYY'),log_client,avg(count(*)) as nums from msint
where to_char(log_time, 'DD-MM-YYYY') = '25-09-2013' and log_client = '10.10.10.1';

并收到错误"nested group function without GROUP BY" 但是当我添加group by log_client,log_time时,会收到另一个错误not a single-group group function

也许有人可以帮我解决问题。感谢。

2 个答案:

答案 0 :(得分:0)

请尝试以下查询,检查结果是否符合预期。

select 
  log_time,
  log_client,
  avg(nums) nums
From(
  select 
    to_char(log_time, 'DD-MM-YYYY')log_time,
    log_client,
    count(*) over(partition by to_char(log_time, 'DD-MM-YYYY'), log_client) as nums 
    from msint
  where 
  to_char(log_time, 'DD-MM-YYYY') = '25-09-2013' and 
  log_client = '10.10.10.1' 
)x
group by log_time, log_client;

答案 1 :(得分:0)

和having子句一起使用group。 如果可能,请分享您的表结构,以便可以对其进行检查。