2017-01-07 49 views
0

我有這樣TE如何獲得行的百分比在mysql中

user result 
john + 
mike - 
john - 
rita + 

表我想要得到的百分比 - 由用戶進行分組。所以對我的例子來說,結果必須是:

user %min 
john 50% 
mike 100% 
rita 0% 

在mysql中創建這樣的查詢可能嗎?

回答

2

只需使用條件聚合。下面是一個簡單的方法:

select user, avg(result = '-') as percent_min 
from t 
group by user; 

這會給該結果作爲0和1之間的值,作爲你的願望,然後可以被格式化。

0

Gordon的答案意味着一個數據庫平臺,它隱式地將布爾值TRUE設置爲1,並將布爾值FALSE設置爲0.這不是標準中規定的。如果你遇到錯誤,會像「功能AVG(布爾)不存在」,嘗試一個CASE表達式:

WITH tb (usr,result) AS (
        SELECT 'john','+' 
     UNION ALL SELECT 'mike','-' 
     UNION ALL SELECT 'john','-' 
     UNION ALL SELECT 'rita','+' 
    ) 
    SELECT 
     usr 
    , AVG(CASE result WHEN '-' THEN 100 ELSE 0 END) AS percent_min 
    FROM tb 
    GROUP BY usr 
    ORDER BY usr; 

玩的開心 -

馬爾科