仅使用MySQL查询创建条形图

时间:2014-07-19 10:53:25

标签: mysql bar-chart

我曾经看过一个MySQL结果,其中一个获取的数量以*显示为条形图。这样的事情。

id | amount | bar
----------------------------
 1 |      7 | *******
 2 |      4 | ****
 3 |      0 | 
 4 |      3 | ***
 5 |      9 | *********
 6 |     10 | **********
 7 |      6 | ******
 8 |      3 | ***
 9 |      2 | **
 10|      0 | 

如果我没记错的话,那就是查询中使用的某种RANGE()函数,比如

SELECT
    `id`,
    COUNT(*) AS `amount`,
    RANGE(`amount`) AS `bar`
FROM
    `table`

但我在google或SO上都没有成功的研究。任何人都知道如何做到这一点,或者可以转发给相应的SO帖子?

1 个答案:

答案 0 :(得分:1)

Strawberry有线索in his comment。我正在寻找的函数名称是REPEAT()。我有趣的是在MySQL文档中找不到它,所以我指的是w3resource(如果有人能找到官方文档,请随时编辑)。

  

语法

REPEAT(str, count)
     
      
  • str要重复的字符串。
  •   
  • count一个整数,表示字符串str重复的次数。
  •   

因此可以像这样使用该功能

SELECT
    `id`,
    COUNT(*) AS `amount`,
    REPEAT('#' , COUNT(`amount`)) AS `bar`
FROM
    `table`

返回类似

的输出
id | amount | bar
----------------------------
 1 |      4 | ####
 2 |     14 | ##############
 3 |      8 | ########
 4 |      5 | #####
 5 |      3 | ###
 6 |     11 | ###########

count参数也可用于拉伸或缩小条形,例如通过乘法 - 或除法,像这样

...
  REPEAT('#', COUNT(`amount`)/4)) AS `bar`
...

会返回这样的内容

id | amount | bar
----------------------
 1 |     20 | #####
 2 |     12 | ###
 3 |     32 | ########