我有這樣的桌子;如何只計算前5個項目,然後將其餘項目分組在其他項目下?
+----+---------+-------------+
| id | user_id | screenWidth |
+----+---------+-------------+
| 1 | 1 | 1366 |
| 2 | 1 | 1366 |
| 3 | 1 | 1366 |
| 4 | 1 | 1366 |
| 5 | 2 | 1920 |
| 6 | 2 | 1920 |
| 7 | 3 | 1920 |
| 8 | 4 | 1280 |
| 9 | 5 | 1280 |
| 10 | 6 | 1280 |
| 11 | 7 | 1890 |
| ...| ... | ... |
| ...| ... | ... |
| ...| ... | ... |
| 100| 6 | 1910 |
+----+---------+-------------+
哪裏有很多screenWidths,但其中90%等於5個值之一。
使用類似的查詢:
SELECT screenwidth
, COUNT(DISTINCT user_id) AS screenwidthcount
FROM screenwidth
GROUP BY screenwidth
ORDER BY screenwidthcount;
(感謝來自How do I count only the first occurrence of a value?)
我得到的次屏幕寬度已發生數一個不錯的計數,每個用戶只有一次計數。
有沒有一種方法來計算最流行的screenWidths,然後收集所有其他類別稱爲「其他」 - 也就是說,而不是上面的查詢返回的行加載,它返回6,前5是當前返回的前5位,第6位是其他值與其他值的總和?
你有沒有考慮過使用MySql的'RANK'功能? – Marc
更正:也許在MySql中沒有'RANK'函數。 – Marc