Mysql SQL-选择各种计数

Mysql SQL-选择各种计数,mysql,sql,select,Mysql,Sql,Select,我有以下表格: User ------------------- id BIGINT name text Session ------------------- id BIGINT username text last_login datetime 并希望获得总用户数,以及从今天开始最后一次登录会话的用户数。如何对查询进行建模?假设您将会话表修改为具有userId而不是userName。那么你的答案取决于数据库。总体思路如下: select count(distinct u.id) as u

我有以下表格:

User
-------------------
id BIGINT
name text

Session
-------------------
id BIGINT
username text
last_login datetime

并希望获得总用户数,以及从今天开始最后一次登录会话的用户数。如何对查询进行建模?

假设您将会话表修改为具有
userId
而不是
userName
。那么你的答案取决于数据库。总体思路如下:

select count(distinct u.id) as user_count,  -- including those with no sessions
       sum(case when cast(last_login as date) = CURRENT_DATE
from users u left join
     sessions s
     on u.id = s.userId ;

这是逻辑的草图。从日期/时间值中删除时间组件因数据库而异。表示当前日期的方式因数据库而异。

在会话表中使用“用户id”列而不是“用户名”。用您使用的数据库标记您的问题。这些表不是我设计的,我无法修改