私のpostgresql dbには、user_id、item_id、succeeded(bool)およびcreated_atという列のスコア表があります。条件付きのSQLカウントとグループ化
各ユーザーと各アイテム(succeeded = 't')の成功アイテムの数をカウントします。しかし、私は最後の失敗後に発生した成功アイテムを数えたいだけです。
私は以下のコードを成功させることなく試してみます。
SELECT COUNT(*), item_id
FROM score
WHERE score.succeeded = 't' AND user_id = XX
GROUP BY score.item_id
HAVING MAX(score.created_at) > score.created_at AND score.succeeded = 'f'
exemple
データ:
user_id | item_id | succeeded | created_at
------------------------------------------
12 | 1 | true | 2016-04-01
12 | 1 | false | 2016-04-02
12 | 1 | true | 2016-04-03
12 | 2 | true | 2016-04-01
12 | 2 | true | 2016-04-02
12 | 2 | true | 2016-04-03
12 | 3 | true | 2016-04-01
12 | 3 | true | 2016-04-02
12 | 3 | false | 2016-04-03
除外結果(ユーザ12):
item_id | succeeded_count
-------------------------
1 | 1
2 | 3
3 | 0
サンプルテーブルのデータと予想される結果を追加できますか? – jarlh
私は例を追加します。 – skyporter