У меня есть запрос SQL, который я хочу преобразовать для использования ORM, но я не могу заставить ORM подсчитывать результаты подзапроса. Итак, мой рабочий SQL:
select FOO
,BAR
,TOTALCOUNT
from(
select FOO
,BAR
,COUNT(BAR) OVER (PARTITION BY FOO) AS TOTALCOUNT
from(
SELECT distinct
[FOO]
,[BAR]
FROM [database].[dbo].[table]
)m
)m
WHERE TOTALCOUNT > 10
Я попытался создать эквивалентный код с помощью ORM, но мой окончательный результат имеет только 1 для окончательного подсчета, код, который я пробовал, ниже
subs = session.query(table.FOO,table.BAR).filter(
table.date > datetime.now() - timedelta(days=10),
).distinct().subquery()
result = pd.read_sql(session.query(subs.c.FOO,subs.c.BAR,func.count(subs.c.BAR).label('TOTALCOUNT')).group_by(subs.c.FOO,subs.c.BAR).statement,session.bind)
Я также пытался сделать это в одном запросе с:
result = pd.read_sql(session.query(table.FOO,table.BAR,func.count(table.BAR).label("TOTALCOUNT")).filter(
and_(
table.date> datetime.now() - timedelta(days= 30),
)
),groupby.order_by(table.FOO).distinct().statement,session.bind)
Но это подсчет столбцов перед применением отдельного оператора, поэтому счетчик неверен. Я был бы очень признателен, если бы кто-нибудь мог мне помочь или сказать, где я делаю ошибку, я гуглил все утро и не могу найти ответ.