次のデータベースがあります(小さな例):
ID | username | action | points | example
1 | matt | login | 3 | 135
2 | john | comment | 6 | 156
3 | john | login | 6 | 189
4 | peter | login | 8 | 125
5 | peter | login | 8 | 165
login
同じアクションと 5 を超えるポイント数 (すべてのアクション)を持つユーザー名を選択してグループ化したいと考えました。すべてのアクションは でなければなりませんlogin
。したがって、このユーザー名に関連するjohn
アクションがあるため、結果は なしになります。comment
関連する質問: MySQL: グループ化された行のみを選択する
考えられる解決策:
SELECT username, COUNT(*) AS cnt, SUM(points) AS points
FROM tableX AS t
GROUP BY username
HAVING MIN(action) = 'login'
AND MAX(action) = 'login'
AND SUM(points) > 5 ;
そして結果:
username | COUNT | points(SUM)
peter | 2 | 16
しかし、IDが最も高い行の他のすべての値を結果に追加したいと思います。サブクエリを試しましたが、正しい解決策が見つかりませんでした。
予想された結果:
ID | username | COUNT | points(SUM) | points | example
5 | peter | 2 | 16 | 8 | 165
何か考えはありますか?どうもありがとうございました!