这可以通过一些字符串操作猴子业务来完成。但是您需要使用等宽字体显示生成的文本字符串。在许多字体中,空格字符占用的星星字符的空间较少,因此如果以这种方式显示这些星星串,零点将不会排列正确。
首先,如果value
是-5
,则表达式IF(value<0, -value, 0)
将产生5
,否则为零。
二,表达式REPEAT('*', IF(value<0,-value,0))
会从你的那个-5
值中连续得到五颗星,并且没有任何正值的星星。
第三,REVERSE(RPAD(REPEAT('*', IF(value<0,-value,0)), 20, ' '))
会得到一个20个字符长的文本字符串,并以一连串的五个星号结尾。这就是你如何做你的小图表的负面部分。
最后,连接到REPEAT('*',IF(value<0,0,value))
以获得对value
的正实例有用的内容。
这应该为你做。
SELECT id,
value,
CONCAT(REVERSE(RPAD(REPEAT('*', IF(value<0,-value,0)), 20, '=')),
REPEAT('*',IF(value<0,0,value))
) AS histogram
FROM t
ORDER BY id
请注意,我硬编码20
作为最大的负值将在这里工作。如果需要,你可以做更复杂的事情。