【问题标题】:PostgreSQL - aggregate functions are not allowed in JOIN conditionsPostgreSQL - 在 JOIN 条件中不允许使用聚合函数
【发布时间】:2021-07-29 10:15:26
【问题描述】:

如何解决这个错误

查询错误:错误:JOIN 条件中不允许使用聚合函数

这是我的查询

SELECT *
FROM "downloads" dl 
   inner join access_logs l 
    on dl.id=l.download_id 
      and dl.file_id=l.file_id 
      and dl.site_id=l.site_id 
      and sum(l.body_bytes_Sent)>dl.filesize

我想要完整下载的所有文件的列表。

sum(body_bytes_Sent)>=filesize

【问题讨论】:

  • 在 CTE 或子查询中聚合然后加入。

标签: sql postgresql


【解决方案1】:

您似乎在假设 SQL 会以某种方式知道它应该对某些东西求和 - 但尚未收到有关如何执行需要 group by 子句的聚合的任何说明。因此,形成一个完整的查询,然后将其作为“派生表”加入,如下所示:

SELECT *
FROM downloads dl 
inner join (
  SELECT download_id, file_id, site_id, sum(l.body_bytes_Sent) AS sum_sent
  FROM access_logs 
  GROUP BY download_id, file_id, site_id
    ) AS l 
      on dl.id=l.download_id 
      and dl.file_id=l.file_id 
      and dl.site_id=l.site_id 
      and L.sum_Sent > dl.filesize

由于没有关于数据模型的详细信息或要检查的样本数据,上述查询可能仍需要改进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多