PostgreSQL中用户交互的返回时间(回复,提及)

娜西亚·恩塔拉(Nasia Ntalla)

假设我们有3个表:tweet,users,tweet_mentusers,其中tweet.user_id = users.id和tweet.id = tweet_mentusers.tweet_id。

该表的表示形式可以是:

    tweet                users                    tweet_mentusers                   

id   | user_id           id                       tweet_id | mentuser_id       
----- --------          -------                   --------- ------------
11   |  1                 1                         11     |  3
12   |  2                 2                         12     |  4
13   |  2                 2                         13     |  4
14   |  1                 1                         14     |  3
15   |  1                 1                         15     |  5
16   |  2                 2                         16     |  4

因此,我试图确定那些用户之间的交互。我在PostgreSQL中的查询是:

select id1, id2 
from (
      select tweet.id as tweetid, tweet_mentusers.mentionedusers_id as id1 
      from tweet 
      inner join tweet_mentusers on tweet.id = tweet_mentusers.tweet_id
      group by 2, 1
      ) a inner join
     (
     select users.id as id2, tweet.id as tweetid 
     from users 
     inner join tweet on users.id = tweet.user_id 
     group by 1, 2
     ) b on a.tweetid = b.tweetid

因此,查询返回发推人员及其提及的人员的ID。但是,我想知道是否有一种方法可以只返回唯一的交互,也许还可以返回交互发生的次数,因为此查询返回所有交互。到目前为止,我已经尝试了一些组合尝试,但是我没有运气。如果您有任何建议,我将不胜感激!

克林

您可以通过一对分组查询的结果(获得的交互次数mentionedtweeter):

select mentioned, tweeter, count(*)
from (
    select id1 mentioned, id2 tweeter
    from (
        select tweet.id as tweetid, tweet_mentusers.mentuser_id as id1 
        from tweet 
        inner join tweet_mentusers on tweet.id = tweet_mentusers.tweet_id
        group by 2, 1
        ) a 
    inner join (
        select users.id as id2, tweet.id as tweetid 
        from users 
        inner join tweet on users.id = tweet.user_id 
        group by 1, 2
        ) b 
    on a.tweetid = b.tweetid
    ) sub
group by 1, 2
order by 1, 2;

 mentioned | tweeter | count 
-----------+---------+-------
         3 |       1 |     2
         4 |       2 |     3
         5 |       1 |     1
(3 rows)    

但是,您的查询不必要地复杂。试试这个:

select mentuser_id mentioned, user_id tweeter, tweet_id
from tweet_mentusers m
join tweet t
on m.tweet_id = t.id

 mentioned | tweeter | tweet_id 
-----------+---------+----------
         3 |       1 |       11
         4 |       2 |       12
         4 |       2 |       13
         3 |       1 |       14
         5 |       1 |       15
         4 |       2 |       16
(6 rows)

最后:

select mentioned, tweeter, count(*)
from (
    select mentuser_id mentioned, user_id tweeter, tweet_id
    from tweet_mentusers m
    join tweet t
    on m.tweet_id = t.id
    ) sub
group by 1, 2
order by 1, 2;

 mentioned | tweeter | count 
-----------+---------+-------
         3 |       1 |     2
         4 |       2 |     3
         5 |       1 |     1
(3 rows)    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PostgreSQL中用户交互的返回时间(回复,提及)

来自分类Dev

从FACEBOOK GRAPH API回复时,如何在我的评论中提及用户?

来自分类Dev

撤消PostgreSQL中用户的ALTER权限

来自分类Dev

撤消PostgreSQL中用户的ALTER权限

来自分类Dev

用户提及 Twitter

来自分类Dev

Discord.py提及提及的用户

来自分类Dev

提及后返回消息

来自分类Dev

限制Windows 10 Pro中用户的使用时间

来自分类Dev

如何列出PostgreSQL中用户定义的功能和过程

来自分类Dev

如何列出PostgreSQL中用户定义的功能和过程

来自分类Dev

无法从SAS中用户定义的函数获取返回值

来自分类Dev

回复时间问题

来自分类Dev

PostgreSQL now() 函数不返回时间

来自分类Dev

如何使用twitter4j api获取Twitter的其他用户提及时间轴?

来自分类Dev

如何在MantisBT note中提及用户

来自分类Dev

在heroCard botframework(nodejs)中提及用户

来自分类Dev

使用whoami搜索提及用户的文件

来自分类Dev

如何让机器人不提及用户

来自分类Dev

等待回复后再返回

来自分类Dev

等待回复后再返回

来自分类Dev

如何在同一时间禁用屏幕上的多个用户交互

来自分类Dev

在没有用户交互的特定时间后运行msql查询?

来自分类Dev

在设置的时间上向下滚动聊天,但在用户交互时停用

来自分类Dev

CoreNLP Server不返回实体提及

来自分类Dev

在PostgreSQL中按用户展平相交的时间跨度

来自分类Dev

在PostgreSQL中寻找多个用户的时间戳之间的差距

来自分类Dev

如何在没有用户交互的情况下设置从某个时间开始的时间控制触发器?

来自分类Dev

阻止用户与AVPlayerView交互?

来自分类Dev

处理中的用户交互

Related 相关文章

热门标签

归档