2017-12-06 14 views
0

私は2つだけの列が含まテーブルがありますsession_id, word_idを、テーブルがsession_wordテーブルから数(*)の列を追加するにはどうすればよいですか?

である私たちは、以下のSQLクエリとして2つの値を取得することができます。

select count(*) as sum_word_freq from session_word 
select count(distinct session_id) as sum_session_freq from session_word 

私は

select word_id, count(*) as word_freq , count(distinct session_id) as word_session_freq 
    from session_word 
    group by word_id 
としてテーブルを確立してい

しかし、別の2つの列、つまりsum_word_freqsum_session_freqに結果を含めたいとします。 どのようにして元のSQLクエリでそれを実現できますか?

答えて

1

あなたは、単一のクエリ内の異なるグループによる集計をしたい場合は、分析関数を使用すると、ソリューションです:

select 
     word_id, 
     word_freq, 
     word_session_freq, 
     --the sum for all dataset 
     sum(word_freq)   over() as sum_word_freq, 
     sum(word_session_freq) over() as sum_session_freq 
from 
(
select word_id, 
     count(*)     as word_freq, 
     count(distinct session_id) as word_session_freq 
    from session_word 
    group by word_id 
)s; 
関連する問題