Для отчета о производительности на 4 серверах я хочу получить AVG на сервер за период, в данном случае 1 минуту.Я могу получить COUNT и MAX, но не AVG (остаться) на сервер.Каждый сервер идентифицируется столбцом CREATE_APP_LOC_ID со значениями 0,1,2 или 3. Что я делаю неправильно в моем запросе?
Спасибо за вашу помощь.
вывод выглядит так:
Overall server_1 server_2 server_3 server_4
Max Avg Max Avg Max Avg Max Avg Max Avg
End Time TXN TPS Stay Stay Appr Decl Other TXN Stay Stay TXN Stay Stay TXN Stay Stay TXN Stay Stay
---------------- ------- ----- ------- ------- ------ ------ ----- --------- ------ ------ --------- ------ ------ --------- ------ ------ --------- ------ ------
2018-12-10 16:40 2354 39 513 74 1345 1008 1 599 316 11 559 48 7 599 513 29 597 328 28
Этот запрос используется:
ACCEPT start_time CHAR PROMPT 'Enter start time (yyyy-mm-dd hh:mm): '
ACCEPT stop_time CHAR PROMPT 'Enter end time (yyyy-mm-dd hh:mm) : '
DEFINE time_diff = 1
SELECT TO_CHAR((MIN(end_time)+(&time_diff/24)), 'YYYY-MM-DD HH24:MI') c1, COUNT(*) c2,
COUNT(*)/60 c3,
MAX(stay) c4, ROUND(AVG(stay)) c5,
SUM (CASE WHEN SUBSTR(TXN.RES_CODE,1,3) = 'APP' THEN 1 ELSE 0 END) c10,
SUM (CASE WHEN SUBSTR(TXN.RES_CODE,1,3) = 'DEC' THEN 1 ELSE 0 END) c11,
SUM (CASE WHEN SUBSTR(RES_CODE,1,3) <> 'APP' AND SUBSTR(RES_CODE,1,3) <> 'DEC' THEN 1 ELSE 0 END) c12,
/*server_1*/
SUM (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 0 THEN 1 ELSE 0 END) c13,
MAX (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 0 THEN stay ELSE 0 END) c20,
AVG (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 0 THEN stay ELSE 0 END) c21,
/*server_2*/
SUM (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 1 THEN 1 ELSE 0 END) c14,
MAX (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 1 THEN stay ELSE 0 END) c20,
AVG (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 1 THEN stay ELSE 0 END) c21,
/*server_3*/
SUM (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 2 THEN 1 ELSE 0 END) c15,
MAX (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 2 THEN stay ELSE 0 END) c20,
AVG (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 2 THEN stay ELSE 0 END) c21,
/*server_4*/
SUM (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 3 THEN 1 ELSE 0 END) c16,
MAX (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 3 THEN stay ELSE 0 END) c20
AVG (CASE WHEN SUBSTR(CREATE_APP_LOC_ID, 1, 1) = 3 THEN stay ELSE 0 END) c21
FROM txn
WHERE txn_origin_id NOT IN (2,3)
AND end_time >= '&start_time'
AND end_time < '&stop_time'
GROUP BY TO_CHAR(end_time, 'YYYY-MM-DD HH24:MI')
ORDER BY 1;