2017-01-25 3 views
1

同じ日付に複数のスキャンを行ったユーザーのテーブル(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; 

得られます:

を私が来た最も近いが、この単純なクエリにあります210

この出力の問題は、各日付で複数のスキャンが発生することです。誰も私はこの出力を取得する方法を見つけるのを助けることができますか?このため

user NumVisits 
andy 2 
lee  3 
tom  1 

答えて

1

使用Count(distinct column)

SELECT 
    user, 
    COUNT(distinct date) NumVisits 
FROM tbl GROUP BY user 
+0

これは完璧に動作し、それはとても簡単です。ありがとうございました! – goodbenito

関連する問題