gpt4 book ai didi

postgresql - SqlAlchemy:多个列的不同计数

转载 作者:行者123 更新时间:2023-11-29 11:12:08 24 4
gpt4 key购买 nike

我做不到:

>>> 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()

这很好('pageload' 数据库表中的唯一用户数)。

这在一般情况下是不正确的,例如将为下表给出 1 而不是 2 的计数:

 col_a | col_b
----------------
xx | yy
xxy | y

有什么方法可以生成下面的 SQL(至少在 postgresql 中有效)?

SELECT count(distinct (col_a, col_b)) FROM my_table;

最佳答案

distinct() 在附加到查询对象时接受多个参数:

session.query(Hit).distinct(Hit.ip_address, Hit.user_agent).count()

它应该生成如下内容:

SELECT count(*) AS count_1
FROM (SELECT DISTINCT ON (hit.ip_address, hit.user_agent)
hit.ip_address AS hit_ip_address, hit.user_agent AS hit_user_agent
FROM hit) AS anon_1

这更接近您想要的。

关于postgresql - SqlAlchemy:多个列的不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16728904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com