2017-07-27 8 views
0

これは私のクエリですが、pagesの数字を表示することはできません。percent_diffが列の平均を上回っています。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

それはそうです、各ページは1つのレコードしかありませんか? – jagad89

答えて

0

これを行う方法はいくつかあります。あなただけの平均取得し、if文を使用でき

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 

オルタナティブ:お使いのベースのクエリで(書き込みを)最速はこのようなものになるだろう。あなたはまだ私はこれが解決策になると思い

+0

を提供してくれていますが、句を持つことで "分からない列percent_diff"が表示されています – EnexoOnoma

+0

percent_diffはありませんでしたあなたの列? –

1

(一度に2つの列にカウントを行うに一度、平均を取得するために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 
)