[英]Group By and Count in a single sql query
我有两个表 - 用户和 login_reports。
users 表有 4 列 - id、email、name、password、created_at、updated_at login_reports 表有 3 列 - id、user_id、created_at。
每次用户登录时,都会在 login_reports 中创建一个条目。
现在我必须编写一个查询来在管理仪表板上显示登录报告。 查询应返回具有登录计数和上次登录的用户行。 有人可以帮我弄这个吗。
SELECT users.id AS id, count(users.id) FROM users
INNER JOIN login_reports
ON users.id = login_reports.user_id
GROUP BY users.id
如何获取上次登录时间戳,即该用户在 login_reports (created_at) 中的最后一个条目。
我想你想要这样的东西
select u.id, count(r.id), max(r.created_at)
from user u
left join login_reports r on r.user_id = u.id
group by u.id
编辑:谢谢@tcadidot0
我使用以下查询来解决这个问题
SELECT users.id as id, count(login_reports.id) as login_count, login_reports.created_at as last_login FROM users LEFT JOIN (SELECT * FROM login_reports ORDER BY created_at DESC) login_reports ON users.id = login_reports.user_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.