2013-09-26 191 views
0

在dns日誌表中,嘗試使用此查詢獲取平均值。一天之內的DNS查詢的數量:使用avg(count())函數

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

也許有人可以幫我一個解決方案。謝謝。

回答

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; 
+0

謝謝。這給了一些輸出,但即時通訊仍然不確定是否正確。只是測試。 – Sergey

+0

我猜想在count(*)上取平均值沒有任何意義,因爲分組是基於相同的列完成的,無論如何我改變了查詢而沒有錯誤。 – TechDo

0

使用group by和having子句。如果可能的話請分享你的表結構,以便查詢可以對照它進行檢查。

+0

這裏是表的結構'CREATE TABLE MSINT ( ID NUMBER NOT NULL ,LOG_CLIENT VARCHAR2(50 BYTE) ,LOG_QUERY VARCHAR2(512 BYTE) ,LOG_TIME TIMESTAMP(6)本地時區 ,約束MSINT_PK PRIMARY KEY ( ID )' – Sergey

+0

你正在使用哪個db?你確定你的create命令已經有效嗎?請提供一些數據。 –

+0

我所有的就是這個'Name Null?Type ------- ---------------------------------- -------- -------- -------------------- ID NOT NULL NUMBER LOG_CLIENT VARCHAR2(50) LOG_QUERY VARCHAR2(512) LOG_TIME TIMESTAMP(6)WITH LOCAL TIME ZONE'及其預言 – Sergey