2017-07-27 73 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 
)