我有以下数据库(小例子):
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
你有什么主意吗?非常感谢!