不同的分组方式在 SQLAlchemy 中不起作用

我的问题是我应该如何distint()根据一列的值删除/忽略数据库中行的重复项。所以这是我的场景。


我有一个test_db包含以下数据的数据库:


values_list = [

    {'tweet_id': '1', 'retweet': '100', 'user_id': '101'},

    {'tweet_id': '2', 'retweet': '10', 'user_id': '101'},    

    {'tweet_id': '2', 'retweet': '11', 'user_id': '101'},        

    {'tweet_id': '10', 'retweet': '110', 'user_id': '102'},            

    {'tweet_id': '10', 'retweet': '110', 'user_id': '102'},                

    {'tweet_id': '110', 'retweet': '0', 'user_id': '2'},                    

]

我想对定义为 的每个用户的转发计数和推文计数求和user_id。我对这样一个问题的查询如下:


q = select([

            test_db.columns.user_id,

            test_db.columns.tweet_id.distinct(),

            func.count(test_db.columns.retweet).label('count'),

            func.sum(cast(test_db.columns.retweet, Integer)).label('total_retweet'),

           ])

q = q.group_by(test_db.columns.user_id)

我得到的是如下:


user_id     tweet_id  count  total_retweet

102         10        2      220

101         2         3      121

2           110       1      0

但我的预期结果应该是这样的:


user_id     tweet_id  count  total_retweet

102         10        1      110

101         2         2      111

2           110       1      0

我不确定我应该如何强制distinct以获得预期的结果,或者有另一种方法来解决这个问题。


哈士奇WWW
浏览 123回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python