這是我的查詢,但是我無法成功顯示其高於列平均值的pages
的數量。如何統計mySQL中高於平均水平的行?
我在這裏錯過了什麼?
SELECT count(page) from
(
select * FROM pages_diff where company_id = 3
group by page
having percent_diff > avg(percent_diff)
) nested
這是我的查詢,但是我無法成功顯示其高於列平均值的pages
的數量。如何統計mySQL中高於平均水平的行?
我在這裏錯過了什麼?
SELECT count(page) from
(
select * FROM pages_diff where company_id = 3
group by page
having percent_diff > avg(percent_diff)
) nested
有幾種方法可以做到這一點。與您的基本查詢最快(寫)將是這樣的:
SELECT above_avg,below_avg from
(
select count(page) as above_avg FROM pages_diff where company_id = 3
group by page
having percent_diff > avg(percent_diff)
) nested_above
,
(
select count(page) as below_avg FROM pages_diff where company_id = 3
group by page
having percent_diff < avg(percent_diff)
) nested_below
替代你可以只是得到平均然後使用if語句。你還是會去通過表兩次(一次得到平均,一次做對兩列算一次)
謝謝,但我得到一個「不知名的列percent_diff在子句中」 – EnexoOnoma
percent_diff不是你的專欄? –
我認爲這將是解決方案:
SELECT count(page) FROM pages_diff
WHERE company_id = 3 AND percent_diff > (
SELECT avg(percent_diff) FROM pages_diff
WHERE company_id = 3
)
是它返回0? – jagad89
@ jagad89是的,它返回0 – EnexoOnoma
是這樣的,每個頁面只有一個記錄? – jagad89