これは私のクエリですが、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
これは私のクエリですが、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
これを行う方法はいくつかあります。あなただけの平均取得し、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
オルタナティブ:お使いのベースのクエリで(書き込みを)最速はこのようなものになるだろう。あなたはまだ私はこれが解決策になると思い
を提供してくれていますが、句を持つことで "分からない列percent_diff"が表示されています – EnexoOnoma
percent_diffはありませんでしたあなたの列? –
(一度に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
)
それは0を返していますか? – jagad89
@ jagad89はいそれは0を返します – EnexoOnoma
それはそうです、各ページは1つのレコードしかありませんか? – jagad89