我不能这样做:
>>> session.query(
func.count(distinct(Hit.ip_address, Hit.user_agent)).first()
TypeError: distinct() takes exactly 1 argument (2 given)
我可以:
session.query(
func.count(distinct(func.concat(Hit.ip_address, Hit.user_agent))).first()
这很好(“页面加载”数据库表中的唯一用户数)。
这在一般情况下是不正确的,例如,下表将给出 1 而不是 2 的计数:
col_a | col_b
----------------
xx | yy
xxy | y
有什么方法可以生成以下 SQL(至少在 postgresql 中有效)?
SELECT count(distinct (col_a, col_b)) FROM my_table;