phpMyAdmin - 不将MySQL查询作为数字读取

时间:2014-07-10 19:30:01

标签: php mysql sql phpmyadmin

我在phpMyAdmin中尝试图形查询结果。下面的查询正确计算中位数和25%和75%四分位数。但是,当我在页面的按钮上的“查询结果操作”中单击“显示图表”时,它会显示一条错误消息,显示“数据中没有数字列可供绘图”。但是,如果我写avg(capital_cost),它将绘制出任何问题。因此,由于某些原因,mySQL没有将每个四分位数识别为数字。

在我的数据库结构中,“capital_cost”字段设置为“decimal(19,2)”类型

  select distinct Component, 

   CONCAT('$', format(CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
  GROUP_CONCAT(capital_cost ORDER BY capital_cost SEPARATOR ','),
   ',', 25/100 * COUNT(*) ), ',', -1) as decimal),2)) AS 'Q1',

 CONCAT('$', format(CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
  GROUP_CONCAT(capital_cost ORDER BY capital_cost SEPARATOR ','),
   ',', 50/100 * COUNT(*) ), ',', -1) as decimal),2)) AS 'Q2',

 CONCAT('$', format(CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
  GROUP_CONCAT(capital_cost ORDER BY capital_cost SEPARATOR ','),
   ',', 75/100 * COUNT(*) ), ',', -1) as decimal),2)) AS 'Q3',


from costs_table where Component = "X" and capital_cost is not null

如果有人知道我可以添加任何其他功能让MYSQL接受这些值作为数字并正确绘制它们,请告诉我!

提前谢谢你:)

1 个答案:

答案 0 :(得分:1)

答案很简单。你做了很多事情来得到一个字符串,而不是DECIMAL:你如何期望带有“$”符号的CONCAT操作返回除字符串之外的其他内容?省略它,将查询简化为:

CAST(
    SUBSTRING_INDEX(
        SUBSTRING_INDEX(
            GROUP_CONCAT(
                capital_cost ORDER BY capital_cost SEPARATOR ','
            ),
            ',', 25/100 * COUNT(*) 
        ), ',', -1
    ) as decimal
) AS 'Q1',

CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
   GROUP_CONCAT(capital_cost ORDER BY capital_cost SEPARATOR ','),
   ',', 50/100 * COUNT(*) ), ',', -1) as decimal) AS 'Q2',

CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
    GROUP_CONCAT(capital_cost ORDER BY capital_cost SEPARATOR ','),
    ',', 75/100 * COUNT(*) ), ',', -1) as decimal) AS 'Q3'

FROM
    costs_table 
WHERE 
     Component = "X" and capital_cost is not null

你应该没事。

注意:

我重新格式化了你的第一个表达式,主要是为了确保我的方括号正确。