0
user result
john +
mike -
john -
rita +
表我想要得到的百分比 - 由用戶進行分組。所以對我的例子來說,結果必須是:
user %min
john 50%
mike 100%
rita 0%
在mysql中創建這樣的查詢可能嗎?
user result
john +
mike -
john -
rita +
表我想要得到的百分比 - 由用戶進行分組。所以對我的例子來說,結果必須是:
user %min
john 50%
mike 100%
rita 0%
在mysql中創建這樣的查詢可能嗎?
只需使用條件聚合。下面是一個簡單的方法:
select user, avg(result = '-') as percent_min
from t
group by user;
這會給該結果作爲0和1之間的值,作爲你的願望,然後可以被格式化。
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;
玩的開心 -
馬爾科