2017-07-27 72 views
0

這是我的查詢,但是我無法成功顯示其高於列平均值的pages的數量。如何統計mySQL中高於平均水平的行?

我在這裏錯過了什麼?

SELECT count(page) from 
(
select * FROM pages_diff where company_id = 3 
group by page 
having percent_diff > avg(percent_diff) 
) nested 
+0

是它返回0? – jagad89

+0

@ jagad89是的,它返回0 – EnexoOnoma

+0

是這樣的,每個頁面只有一個記錄? – jagad89

回答

0

有幾種方法可以做到這一點。與您的基本查詢最快(寫)將是這樣的:

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語句。你還是會去通過表兩次(一次得到平均,一次做對兩列算一次)

+0

謝謝,但我得到一個「不知名的列percent_diff在子句中」 – EnexoOnoma

+0

percent_diff不是你的專欄? –

1

我認爲這將是解決方案:

SELECT count(page) FROM pages_diff 
WHERE company_id = 3 AND percent_diff > (
    SELECT avg(percent_diff) FROM pages_diff 
    WHERE company_id = 3 
)