2017-09-26 11 views
-1

人がボタンを押すたびにログに記録するテーブルがある場合。 使用postgresの お互いの1週間に作成される行のSQL

だから私はこのようなデータの多くを持っている:

PressedButton 
__________ 
ID || userId || timestamp 
__________ 

は、どのように私は少なくとも週に一回これを行うユーザーの数を選択することができますか?

+0

私はpostgresを使用していますが、SQLクエリを使用するDBMSであれば、おそらくそこから作成することができます。私はちょうど正しい方向に指摘する必要があります。 @a_horse_with_no_name – fromthewoods

+0

サンプルテーブルのデータと予想される結果(すべて画像ではなく書式付きのテキストとして)を追加してください。 – jarlh

答えて

0

は一度、すでにそれをやっデフォルトで

「週に一度」週に一度行われます。あなたはスキップせずに毎週を意味しますか?

または、過去7日間にボタンを押しただけですか?

 
Select * 
From table 
Where timestamp>=adddate(now(),-7) 

EDIT

これは正確に何をしたいではありませんが、それは

 
SELECT ID, distinct(userId),timestamp 
FROM table 
Group by userId 
Having COUNT(ID) => 2 
+0

あなたの答えをありがとう。しかし、私は定期的にもっと探しています。少なくとも2週間連続で – fromthewoods

+0

あなたが考えなければならない方向を与えるために編集を投稿しました。 –

0

をそれに少なくとも2時間はない行っているすべてのユーザが表示されますでしょう 正確に何をしたいのですか?ユーザーと週ごとのボタンの数を取得するには、次のようなものを使用してください:

select userid, to_char(timestamp, 'iyyy-iw') as week, count(*) 
from pressedbutton 
group by userid, to_char(timestamp, 'iyyy-iw') 
having count(*) > 1 --<< at least once a week 

to_char(timestamp, 'iyyy-iw')は、ISO年/ ISO週の組み合わせとしてフォーマットされたタイムスタンプを返し、カウント(*)がその週にボタンを何回押したかをカウントします。

関連する問題