这是我的查询,但是我无法成功显示其高于列平均值的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