Я привожу другой пример, упрощающий работу с базовыми процентами от 0 до 100 без использования параметров порога.
WITH fake_data AS
(
SELECT 20 AS perc, 1001 AS entity FROM dual UNION ALL
SELECT 30 AS perc, 1002 AS entity FROM dual UNION ALL
SELECT 45 AS perc, 1003 AS entity FROM dual UNION ALL
SELECT 100 AS perc, 1004 AS entity FROM dual UNION ALL
SELECT 95 AS perc, 1005 AS entity FROM dual UNION ALL
SELECT 33 AS perc, 1006 AS entity FROM dual UNION ALL
SELECT 57 AS perc, 1007 AS entity FROM dual UNION ALL
SELECT 70 AS perc, 1008 AS entity FROM dual UNION ALL
SELECT 75 AS perc, 1009AS entity FROM dual UNION ALL
SELECT 77 AS perc, 1010 AS entity FROM dual UNION ALL
SELECT 85 AS perc, 1011 AS entity FROM dual UNION ALL
SELECT 90 AS perc, 1012 AS entity FROM dual UNION ALL
SELECT 94 AS perc, 1013 AS entity FROM dual UNION ALL
SELECT 57 AS perc, 1014 AS entity FROM dual UNION ALL
SELECT 60 AS perc, 1015 AS entity FROM dual UNION ALL
SELECT 65 AS perc, 1016 AS entity FROM dual UNION ALL
SELECT 80 AS perc, 1017 AS entity FROM dual
)
, stats AS
( /* Making it easy to adjust the values used by SQLDEV:GAUGE here as a single record. */
SELECT 0 AS min_value, 100 AS max_value, 0 AS low_threshold, 0 AS upper_threshold FROM dual
)
SELECT
'SQLDEV:GAUGE:'|| s.min_value
||':'|| s.max_value
||':'|| s.low_threshold
||':'|| s.upper_threshold
||':'|| fd.perc
AS perc_visual
/* SQLDEV:GAUGE:0:20000:1000:5000 equates to min:max:low threshold:upper threshold:value to graph */
, fd.perc
, fd.entity
FROM stats s, /* Single Record here so we can just use 'comma joins' here aka crappy old skool join syntax */
fake_data fd
ORDER BY perc desc
;
![enter image description here](https://i.stack.imgur.com/jeQ6d.png)