0
如何查看前5個結果,並將其餘部分分組在「其他」下?如果我有一個表「訪問」同場「頁」,它有100行,我需要的結果是這樣的:選擇排名前5的結果,然後將其餘分組爲「其他」?
Other 40
/ 20
/about 15
/contact 10
/welcome 10
/test 5
我無法做到這一點對我自己的一個查詢。
如何查看前5個結果,並將其餘部分分組在「其他」下?如果我有一個表「訪問」同場「頁」,它有100行,我需要的結果是這樣的:選擇排名前5的結果,然後將其餘分組爲「其他」?
Other 40
/ 20
/about 15
/contact 10
/welcome 10
/test 5
我無法做到這一點對我自己的一個查詢。
嘗試
select case when v2.page is not null
then v1.page
else 'other'
end,
count(*)
from visits v1
left join
(
select page, count(*) as pcount
from visits
group by page
order by pcount desc
limit 5
) v2 on v1.page = v2.page
group by case when v2.page is not null
then v1.page
else 'other'
end
有運行此當是一個SQL小提琴 http://sqlfiddle.com/#!2/8b116/4
SQL左連接上W3Schools的 http://www.w3schools.com/sql/sql_join_left.asp
SELECT CASE WHEN v2.page IS NOT NULL
THEN v1.page
ELSE 'other'
END AS page,
count(*) AS count
FROM visits v1
LEFT JOIN
(
SELECT page, COUNT(*) AS pcount
FROM visits
GROUP BY page
ORDER BY pcount DESC
LIMIT 5
) v2 ON v1.page = v2.page
GROUP BY page
ORDER BY count DESC
我得到一個錯誤:「#1064 - 你必須您的SQL語法錯誤;請查看與您的MySQL服務器版本相對應的手冊,以便在訪問中使用靠近'*)的正確語法v1離開連接(選擇頁面,從第5行「 – Sultanen
」嘗試count「(*)」或「count(v1.some_column_of_vists)」而不是count(v1。*)),將count(*)作爲pcount。 –
作品像一個魅力,謝謝=) – Sultanen