2017-03-09 96 views
0

我有以下表格:SQL - 選擇不同的計數

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

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

,並希望得到的用戶總數,並且具有與今天最後一個登錄會話的用戶的數量。我如何建模查詢?

+4

在會話表中具有user_id列而不是用戶名。 – jarlh

+1

用您正在使用的數據庫標記您的問題。 –

+0

我沒有設計這些表,我不能修改它們 – Desiderantes

回答

1

讓我假設你修復了會話表有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 ; 

這是邏輯的草圖。從日期/時間值中刪除時間組件因數據庫而異。表示當前日期的方式因數據庫而異。

+0

它的工作原理!謝謝! – Desiderantes