我完全停留在編寫SQL代碼來處理任務的最佳方式,我必須生成報告。我們使用Sybase ASA。它嵌入了一個應用程序。查詢需要產生以下輸出:當條件存在時加起來的所有事件
媒體服務器|備份總數|卷大小(KB)|平均吞吐量|成功數量|工作成功%
每個媒體服務器將是唯一的。
我遇到了成功的工作數量然後確定成功率的問題。
這裏是我的代碼:
SELECT
dmj.name AS "Media Server",
CAST(SUM(dj.bytesWritten/1024/1024) as decimal(20,2)) as "Volume(MB)",
COUNT(distinct dj.id) AS "Total Number of Jobs",
CAST(AVG(dj.throughput) as decimal(10,2)) AS "Throughput (KB/sec)",
CASE
WHEN dj.statusCode = '0'
THEN COUNT (dj.statusCode)
END AS "Number of Successful Jobs"
FROM domain_JobArchive dj
INNER JOIN domain_MediaServer dmj
ON dj.mediaServerName = dmj.name
WHERE DATEDIFF(day, UtcBigIntToNomTime(dj.endTime), GETDATE()) <= 7
AND dj.Type != '17'
AND dj.statusCode = 0
GROUP BY dmj.name, dj.statusCode
我也仍然不確定如何展現成功的%。
我們使用Sybase ASA,因爲它嵌入在應用程序中。
感謝。
我不知道是什麼導致問題是statusCode的一部分。含有聚合物的CASE將會起作用嗎?該案件每行都在運行,但總計超過了行數:我認爲這不會起作用。 你可能需要的是SUM(CASE當dj.statusCode ='0',然後1 else 0結束)來獲得成功次數。成功的百分比是該表達式除以COUNT(*)。 –
好點安倍。我不知道CASE如何處理數據。我會試試看看它會產生什麼。 – Opethian
我將如何顯示百分比計算的代碼?它會像這樣:SUM(CASE WHEN dj.statusCode ='0' THEN COUNT(dj.statusCode) END/COUNT(*))AS「Success%」 – Opethian