同じ日に複数のスキャンを行ったユーザーのテーブル(tbl)があり、一部のユーザーは複数の日付に複数のスキャンを行っています。
user date scan
andy 20160301 T1
andy 20160301 T2
andy 20160301 T1
andy 20160401 T1
andy 20160401 T2
lee 20160401 T1
lee 20160401 T2
lee 20160701 T1
lee 20160701 T2
lee 20160801 T1
lee 20160801 T2
tom 20160501 T1
tom 20160501 T2
tom 20160501 T2
各ユーザーの一意の日付の数(各日付で発生したスキャンの数とは関係ありません)が欲しいので、次のようにします。
user NumVisits
andy 2
lee 3
tom 1
私はいくつかのことを試しましたが、私が来た最も近いものはこの単純なクエリにあります:
SELECT user, COUNT(*) NumVisits FROM tbl GROUP BY user HAVING NumVisits > 1;
これにより、次のことが得られます。
user NumVisits
andy 5
lee 6
tom 3
この出力の問題は、各日付の複数のスキャンを考慮していることです。誰かがこの出力を取得する方法を理解するのを手伝ってもらえますか?
user NumVisits
andy 2
lee 3
tom 1
これに使用Count(distinct column)
します:
SELECT
user,
COUNT(distinct date) NumVisits
FROM tbl GROUP BY user
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加