繁体   English   中英

在单个 sql 查询中分组和计数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM