2014-07-10 37 views
0

我正在嘗試phpMyAdmin中的圖形查詢結果。以下查詢正確計算中位數和25%和75%四分位數。但是,當我在頁面按鈕上的查詢結果操作中單擊「顯示圖表」時,它會顯示一條錯誤消息,指出「數據中沒有數字列進行繪圖」。但是,如果我寫avg(capital_cost)將繪製出任何問題。所以出於某種原因,mySQL並沒有將每個四分位數字都識別爲數字。phpMyAdmin - 不將MySQL查詢讀爲數字

在我的數據庫的結構中,「capital_cost」字段設置類型「十進制(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接受這些值作爲數字並正確繪製它們,請讓我知道!

先謝謝您:)

+0

我相信你可以在這個線程中找到幫助:http://stackoverflow.com/questions/11830509/cast-to-decimal-in-mysql – andershagbard

+0

我已經應用演員作爲十進制功能,這就是爲什麼我是困惑,它不工作。 – user3760644

回答

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 

你應該沒問題。

注:

我重新格式化你的第一個表達主要是爲了獲得肯定,我得到了括號權。