簡體   English   中英

基於日期的單獨表中兩個字段的計算字段

[英]calculated field from two fields in separate tables based on a date

使用PostgreSQL v9.6

通過將當天的總入侵時間除以該天按計算機分組的當天的可用正常運行時間,來嘗試平均實際入侵時間。

單擊此處獲取SQLFiddle

查詢應類似於:

SELECT availability.adate, sum(intrusionEvents.duration)/availability.uptime,  intrusionEvents.host
FROM availability LEFT JOIN intrusionEvents ON (availability.adate = intrusionEvents.itime::date)
WHERE availability.adate >= '20171001' AND availability.adate < '20171101'
GROUP BY availability.adate, intrusionEvents.host
ORDER BY availability.adate, intrusionEvents.host

(其中正常運行時間和intrusionDuration以秒為單位...)

在這種變化中,我遇到了兩個問題:

  1. 在此示例中,available.uptime需要匯總。
  2. 我已經解決了這個問題,但后來卻遇到了數百行。

任何有關如何匯總字段中各個持續時間,然后將其除以具有匹配日期的不同表中的值的任何建議(和示例),將不勝感激!

所以我通過以下方式在組中添加了available.uptime

select availability.adate, sum(intrusionEvents.duration)/availability.uptime,  intrusionEvents.host
FROM availability left join intrusionEvents on (availability.adate = intrusionEvents.itime::date)
WHERE availability.adate >= '20171001' and availability.adate < '20171101'
GROUP by availability.adate, intrusionEvents.host,
availability.uptime

得到了以下結果集:

在此處輸入圖片說明

這就是你想要的嗎?

暫無
暫無

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

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