2016-08-05 8 views
0

バックグラウンドによっては、ユーザーが実行したアクションの数をカウントし、date_trunc()を使用してこれらのアクションを月単位でグループ化するテーブルをpgSQL9.5に作成しています。個々のアクションのカウントはこの形式以下、別々のテーブルに分かれています。理想的にはpgSQL:2つの列の完全な外部結合によって行が省略されています

Feedback_Table:        Comments_Table: 
id | month | feedback_counted   id | month | comments_counted 
----+---------+-------------------   ----+---------+------------------- 
1 | 2 |   3      1 | 4 |   12 
1 | 3 |  10      1 | 5 |   4 
1 | 4 |   7      1 | 6 |   57 
1 | 5 |   2      1 | 7 |   12 

、私はFULL OUTERが同じで、「ID」と「月」列でのこれらのテーブルのJOINをやりたいですこのクエリを、時間と生産:これは私の現在のステートメント、ノートで

Rollup_Table: 
id | month | feedback_counted | comments_counted 
----+---------+--------------------+-------------------  
    |   |     |  
    |   |     |  
1 | 4 |   7   |  12 
1 | 5 |   2   |   4 
1 | 6 |     |  57 
1 | 7 |     |  12 

Combined_Table: 
id | month | feedback_counted | comments_counted 
----+---------+--------------------+------------------- 
1 | 2 |   3   |   
1 | 3 |  10   |   
1 | 4 |   7   |  12 
1 | 5 |   2   |   4 
1 | 6 |     |  57 
1 | 7 |     |  12 

しかし、私の現在のクエリは、このようなようにそれを表示し、フィードバック日付をキャプチャしていませんそれはmonthの代わりにdate_truncを使用しています。私は後でアクションカウントを追加し、主な問題はここのどこかにあります。

CREATE TABLE rollup_table AS 
SELECT c.id, c.date_trunc 
    FROM comments_counted c FULL OUTER JOIN feedback_counted f 
    ON c.id = f.id AND c.date_trunc = f.date_trunc 
GROUP BY c.id, c.date_trunc, f.id, f.date_trunc; 

私はSQLで初心者のビットだと任意の助けをいただければ幸い、この問題を解決する方法がわからないです。

答えて

0

代わりのON c.id = f.id AND c.month = f.month

SELECT c.id, c.month, feedback_counted, comments_counted 
FROM comments c 
FULL OUTER JOIN feedback f 
ON c.id = f.id AND c.month = f.month; 

id | month | feedback_counted | comments_counted 
----+-------+------------------+------------------ 
    |  |    3 |     
    |  |    10 |     
    1 |  4 |    7 |    12 
    1 |  5 |    2 |    4 
    1 |  6 |     |    57 
    1 |  7 |     |    12 
(6 rows)  

使用USING(id, month)

SELECT id, month, feedback_counted, comments_counted 
FROM comments c 
FULL OUTER JOIN feedback f 
USING(id, month); 

id | month | feedback_counted | comments_counted 
----+-------+------------------+------------------ 
    1 |  2 |    3 |     
    1 |  3 |    10 |     
    1 |  4 |    7 |    12 
    1 |  5 |    2 |    4 
    1 |  6 |     |    57 
    1 |  7 |     |    12 
(6 rows) 
+0

、おかげで働いていました! –

関連する問題