簡體   English   中英

Oracle DB 查詢以獲取記錄計數並隨后計算平均值

[英]Oracle DB query to get records count and calculate average afterward

任何人都可以幫助我了解該 Oracle 查詢。 這是我需要的輸出。 在此處輸入圖片說明 感謝高級。從下面的查詢返回一些記錄我想計算平均值意味着 SUM(COST+DURATION)/No.of 行返回形式該查詢但在查詢下面基於 SITE_ID 做分區我不想要任何分區,想要的是什么查詢返回(所有持續時間的總和+所有成本的總和/行返回數)但沒有任何分區是我可以做到的任何方式

select * from (SELECT ROW_NUMBER() OVER (ORDER BY 1) RN,
SITE_ID,
CASEID,WOID,持續時間,
成本,
(SUM(COST+DURATION) OVER(PARTITION BY SITE_ID))/COUNT as TotalCost from

     (
      SELECT  COUNT(*) OVER () as COUNT,
      SITE_ID,  
      CASEID,
      WOID,
      ROUND(table1.duration/3600,2) AS DURATION,
      ROUND(table2.duration/3600),2) AS COST
       FROM table1  ) AVG

WHERE (1=1) ) 其中 rn 介於 0 和 1000 之間

根據您修改后的問題,我認為您想要的是每個站點的 COST 和 DURATION 的總和,加上從table1table2的條目數得出的這些數字的平均值。 這是這個查詢的作用:

select site_id
       , duration
       , cost
       , (duration+cost)/no_of as avg_total_cost
from (
    select
      table1.site_id
      , count(*) as no_of
      , sum(round(table1.duration/3600,2)) as duration
      , sum(round((table1.labor_rate * table2.duration)/3600,2)) as cost
    from table1
    inner join table2
        on table1.id = table2.id
    group by table1.site_id 
)
/

這里有一個 SQL Fiddle 演示來證明這個查詢運行成功。


您的問題似乎引用了其他表、 siteemp ,我忽略了它們,因為您沒有為它們提供連接條件。 同樣,我忽略了 top-n 過濾器; 如果你願意,你可以把它加回來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM