2017-03-09 11 views
0
私は以下の表を持っている

SQL - 選択する様々なカウント

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

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

、総ユーザー数を取得したい、今日からの最後のログインとセッションを持っているユーザーの数。どのように私はクエリをモデル化できますか?

+4

セッションテーブルのusernameの代わりにuser_id列を指定します。 – jarlh

+1

使用しているデータベースで質問にタグを付けてください。 –

+0

私はそれらのテーブルを設計していないし、私はそれらを変更することはできません – Desiderantes

答えて

1

userNameではなく、userIdにセッションテーブルを修正するとします。答えはデータベースによって異なります。一般的な考え方は次のようなものです:

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