在SQLAlchemy中使用子查询、分组、计数和求和的高级SQL查询

2 投票
1 回答
2519 浏览
提问于 2025-04-16 06:25

我写了下面这个查询。

select distinct(table3.*), 
       (select count(*) 
         from table2 
        where table2.cus_id = table3.id) as count, 
       (select sum(amount) 
         from table2 
        where table2.cus_id = table3.id) as total 
  from table2, 
       table1, 
       table3 
 where table3.id = table2.cus_id 
   and table2.own_id = table1.own_id;

这个查询的作用是计算某一列的总和,以及产生这个总和的行数,还能从另一个表中获取一些相关的数据。(如果你觉得有改进的空间,可以随意优化一下)

我需要把这个转换成SQLAlchemy的格式,但我不知道从哪里开始。任何建议都非常感谢。

1 个回答

3

这是我对你问题的重新表述:

SELECT t3.*,
      x.count,
      x.amount
 FROM TABLE3 t3
 JOIN (SELECT t2.cus_id
              COUNT(*) AS count,
              SUM(t2.amount) AS total
         FROM TABLE2 t2
        WHERE EXISTS(SELECT NULL
                       FROM TABLE1 t1
                      WHERE t1.own_id = t2.own_id)
     GROUP BY t2.cus_id) x ON x.cus_id = t3.id

抱歉,我帮不了你关于SQLAlchemy的部分。

撰写回答