具有负值的mysql直方图

标签 mysql histogram

我有一个这样的表:

ID | value
----------
1  |  -3 
2  |  -4
3  |   5
4  |   2

我想像这样在 mysql 中显示直方图:

ID | value | histogram
-------------------------
1  |  -3   | ***
2  |  -4   |****
3  |   5   |    *****
4  |   2   |    **

我不知道如何表示负值。

最佳答案

这可以通过一些字符串操作猴子业务来完成。但是您需要使用等宽字体显示生成的文本字符串。在许多字体中,空格字符占用的空间比星号字符少,因此如果以这种方式显示这些星号串,零点将不会正确对齐。

首先,表达式 IF(value<0, -value, 0)将产生 5如果value-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作为将在这里工作的最大负值。如果需要,您可以做一些更复杂的事情。

关于具有负值的mysql直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27461025/

相关文章:

r - r 中双对数刻度上的直方图仅显示有限数量的值

mysql - 在是(对象,Cl): error while fetching rows R

php - Mysql Query Join 两张表 Order by 一张表的列

c# - MySQL 日期时间显示不正确的时间。 ASP.NET C#

scala - 在 Scala 中与齐柏林飞艇一起使用 plotly

r - SuperImpose 直方图适合一张图 ggplot

mysql - 如何对数据库中的字母数值使用自动递增

PHP - 如果语句在 foreach 循环中无法正常工作

image-processing - 从直方图中获取黑白强度值

r - 制作因子变量的频率直方图