我的问题是我应该如何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以获得预期的结果,或者有另一种方法来解决这个问题。
相关分类