表格是這樣的:
ratio|user
0.1|2
0.3|2
1 |2
1 |2
0.4|3
0.7|3
對于每個用戶,查詢應該回傳比率為 1 的次數,或者,如果該用戶沒有 1 比率,則回傳最高比率。所以給定上表,查詢應該回傳:
2|2
3|0.7
因為用戶 2 的比率有兩個“1”值,而用戶 3 的最高比率是 0.7。
我現在所擁有的select user,count(ratio) from table where ratio = 1 group by user;
但顯然在要求的第二部分失敗了。我是否應該制作一個已經填充了第一個查詢結果的子表...?
uj5u.com熱心網友回復:
使用CASE
運算式在計數和最大值之間進行選擇:
SELECT user, CASE WHEN SUM(ratio = 1) > 0
THEN SUM(ratio = 1) ELSE MAX(ratio) END AS ratio
FROM yourTable
GROUP BY user;
uj5u.com熱心網友回復:
我認為這可以分兩步完成,例如:
select user,count(ratio) as column2 from table where ratio = 1 group by user
union
select user,max(ratio) as column2 from table where ratio <> 1 group by user
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/470334.html