使用Python的sqlite3跨列统计唯一值结果异常求助
问题解决:跨列统计唯一用户总数
你当前的SQL语句逻辑错误:SELECT DISTINCT from_id, to_id FROM test是统计两列组合的唯一行,你的表恰好有10个唯一的(from_id, to_id)对,所以返回结果10,这和你要的「跨列所有唯一用户ID总数」完全不是一个需求。
要实现跨列统计所有唯一用户的数量,需要把from_id和to_id两列的所有值合并成一个集合,再去重计数,用UNION(自动去重)即可实现:
curr.execute("SELECT COUNT(*) FROM (SELECT from_id AS user_id FROM test UNION SELECT to_id AS user_id FROM test)")
补充说明
UNION会合并两个查询的结果集,并自动移除重复值,所以from_id里的0只会被统计一次,加上to_id里的10个唯一值,最终得到11的正确结果。- 你的代码里存在一个小笔误:创建表时用的是
social_table,但插入数据时写的是test表,虽然当前不影响问题,但建议统一表名避免后续出错。
内容的提问来源于stack exchange,提问作者Tia Kang Jun
相关产品推荐
相关产品推荐

