0
當我試圖執行以下查詢它給了我正確的結果,但我想說明的範圍內動態MySQL的 - 用戶的總積分在不同範圍內計算與動態範圍
SELECT
CASE
WHEN points <= 25 THEN '0-25'
WHEN points BETWEEN 25 AND 50 THEN '25-50'
WHEN points BETWEEN 50 AND 75 THEN '50-75'
WHEN points BETWEEN 75 AND 100 THEN '75-100'
ELSE '> 100'
END AS `Range`
,COUNT(*) AS `Count`
,CASE
WHEN points <= 25 THEN 1
WHEN points BETWEEN 25 AND 50 THEN 2
WHEN points BETWEEN 50 AND 75 THEN 3
WHEN points BETWEEN 75 AND 100 THEN 4
ELSE 5
END AS `Sort`
FROM (
SELECT user_id, SUM(points) as points
FROM tbl
GROUP BY user_id
) AS summary
GROUP BY `Range`, `Sort`
輸出
+--------+-------+
| Range | Count |
+--------+-------+
| 0-20 | 01 |
| 25-50 | 02 |
| 50-75 | 01 |
| 75-100 | 04 |
| > 100 | 00 |
+--------+-------+
我從另一個表中得到下列值的100值
SELECT MIN(points)FROM tbl1 where 1 LIMIT 0,1
如果最小值將是100然後輸出將是:
輸出
+--------+-------+
| Range | Count |
+--------+-------+
| 0-20 | 01 |
| 25-50 | 02 |
| 50-75 | 01 |
| 75-100 | 04 |
| > 100 | 00 |
+--------+-------+
如果最小值將是500然後輸出將是:
輸出
+---------+-------+
| Range | Count |
+---------+-------+
| 0-100 | 01 |
| 100-200 | 02 |
| 300-400 | 01 |
| 400-500 | 04 |
| > 500 | 00 |
+---------+-------+
在此先感謝
當我的最小值是500時,它仍然顯示範圍如0-25,25-50它應該是0-100,100-200 –
我只是在我的乘數中修正了一個錯誤,但那不能解釋你的結果。你不可能從我的代碼中獲得類似的範圍。你可以做一個sqlfiddle嗎? – Barmar
我很困惑你的例子。當最小值爲100時,你上升了1/4,但當最小值爲500時,你上升1/5。但是你錯過了200-300的範圍。 – Barmar