2017-03-20 17 views
-1

id,ipおよびemailという列を含むusersというテーブルがあります。私は、同じIPからログインしている5人から10人のユーザーの間で、どれくらい多くのユーザーが次の基準を満たしているかを知りたいと思います。 - 結果としてidemailcountID2つのテーブルを最適な方法で結合する

select count(distinct id) as countID, 
    ip 
from users 
group by ip 
having count(distinct id) between 5 and 10 

は、私は次の列を取得したい:これまでのところ私はこのクエリを持っています。私は上部のクエリで1つのテンポラリテーブルを作成し、それに続いてipをキーとしてusersテーブルと結合することを考えていましたが、約3百万行があるので時間がかかりすぎます。誰もがより良い解決策を考えることができますか?

+2

これは尋ねられませんでしたか?サンプルデータと期待される出力を教えてください。なぜなら、10人のユーザが同じIPを使ってログインすると、10通のメールがあるからです。 –

+0

@JuanCarlosOropeza前の答えから、私はちょうどcountIDとipを得ました。私が実際に必要とするのは、id、email、ountIDです。 –

+0

2番目のテーブルは何ですか?私はこの質問に1つしか見ません。 –

答えて

2

私は、元のテーブルにIPで参加することで、必要な詳細を得ることができると思います。

select u.*, 
    u2.countID 
from users u 
join (
    select count(distinct id) as countID, 
     ip 
    from users 
    group by ip 
    having count(distinct id) between 5 and 10 
    ) u2 on u.ip = u2.ip; 
関連する問題