连接两个查询以形成一个表-在postgres

时间:2018-12-24 17:22:34

标签: sql postgresql join

我生成了一个查询,以按日期以及每个平均持续时间提取唯一登录信息。我现在想做的是添加一个代表登录名的列。

我获取唯一登录名的方式是减去最大和最小创建日期(这是计算平均持续时间所必需的)。

我现在有一个简单的查询来计算所有登录(不只是唯一的登录)。

根据我的查询-如何添加列,这样我将拥有登录名,唯一登录名,average_duration和login_date?

我的查询:

SELECT 
COUNT(unique_session_ids) as unique_logins
,AVG(
      CASE WHEN duration > '0' 
      THEN duration 
      END) as average_duration
,login_date                                                    
FROM(
    SELECT a.session_id as unique_session_ids
    ,MAX(a.created)-min(a.created) as duration
    ,MIN(to_char(b.created,'mm-dd')) as login_date   
        FROM base_identity a
            INNER JOIN base_identity b
            ON a.session_id = b.session_id
        WHERE a.source_system_id = 11
        AND a.created >= '2018-12-01'
        GROUP BY a.session_id) x
GROUP BY login_date;

我要添加的内容:

SELECT COUNT(session_id) as logins                                                             
FROM base_identity
GROUP BY to_char(created,'mm-dd')

因此,我基本上只希望将登录名和唯一登录名一起表示。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用以下语法从多个表中进行选择

SELECT Table1.column_name, Table2.column_name
FROM Table1, Table2

在您的情况下,看起来像

SELECT 
    COUNT(x.unique_session_ids) as unique_logins
    ,AVG(CASE WHEN x.duration > '0' THEN x.duration END) as average_duration
    ,x.login_date
    ,COUNT(y.session_id)                                  
FROM([...]) x
    , base_identity y
GROUP BY x.login_date;