2017-03-21 5 views
0

"1回の訪問、2回以上の訪問、5回以上の訪問、10回以上の訪問など、IPをグループ化して繰り返し回数をカウントします。データ範囲の数をより効率的に作成する方法は何ですか?

私はまだそれが1つのクエリでインライン化が必要な場合は、これを書くためのより効率的な方法は何ですか、この

select (select count(*) from (select ip_agent_md5, count(*) as cnt from $table group by ip_agent_md5 having count(*) > 1)) as over_1_visit \ 
, (select count(*) from (select ip_agent_md5, count(*) as cnt from $table group by ip_agent_md5 having count(*) > 2)) as over_2_visits \ 
, ... from my_table; 

のように見えるクエリを記述終わりましたか?

答えて

2
SELECT some_column, sum(case when cnt > 1 then 1 else 0 end) as over_1, 
        sum(case when cnt > 3 then 1 else 0 end) as over_3 
FROM 
(
    SELECT some_column, COUNT(*) as cnt 
    FROM some_table 
    GROUP BY some_column 
) x 
+0

ありがとう – ForeverConfused

関連する問題