在同一个 SQL 查询中运行正常的 pull 和 sum()

Posted

技术标签:

【中文标题】在同一个 SQL 查询中运行正常的 pull 和 sum()【英文标题】:Running a normal pull and a sum() in the same SQL query 【发布时间】:2017-10-16 21:03:36 【问题描述】:

我希望将以下两个查询作为单个查询运行,但不知道如何执行此操作。这(每个 ID 1 行 DATA1、DATA2、DATA3):

SELECT

ID
DATA1
DATA2
DATA3

FROM TABLE1

还有这个(每个 ID 多行 DATA 4 和 DATA5):

SELECT

TABLE1.ID
SUM(TABLE2.DATA4)
SUM(TABLE2.DATA5)

FROM TABLE1

JOIN TABLE2
ON TABLE2.ID = TABLE1.ID

GROUP BY ID;

输出为单个表(100k~ 行),其中包含以下列:ID、DATA1、DATA2、DATA3、SUM(DATA4)、SUM(DATA5)。

这可能吗?尝试使用 UNION,它说我需要为每个查询使用相同的表达式,这是有道理的。中级 SQL 用户,所以我不知道还能扔什么。

谢谢!

【问题讨论】:

【参考方案1】:

您可以将额外的列添加到selectgroup by

SELECT t1.ID, t1.DATA1, t1.DATA2, t1.DATA3,
       SUM(t2.DATA4), SUM(t2.DATA5)
FROM TABLE1 t1 JOIN
     TABLE2 t2
     ON t2.ID = t1.ID
GROUP BY t1.ID, t1.DATA1, t1.DATA2, t1.DATA3;

【讨论】:

【参考方案2】:

如果希望仅按 ID 分组求和,您可以将求和作为子选择执行并将其加入主查询:

SELECT t1.ID, t1.DATA1, t1.DATA2, T1.DATA3, ss.TOT_DATA4, ss.TOT_DATA5
  FROM TABLE1 t1
  INNER JOIN (SELECT ID, SUM(DATA4) AS TOT_DATA4, SUM(DATA5) AS TOT_DATA5
                FROM TABLE1
                GROUP BY ID) ss
    ON ss.ID = t1.ID

以这种方式完成后,无论 DATA1、DATA2 和 DATA3 值如何,对于每个 ID 值,您都将获得相同的 SUM_DATA4 和 SUM_DATA5 值。

祝你好运。

【讨论】:

以上是关于在同一个 SQL 查询中运行正常的 pull 和 sum()的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 webhook 触发后在服务器上运行 git pull,但无法正常工作

Pubsub.pull 请求无法正常工作 - 去吧

在 mac OS 上从 crontab 运行 git pull 命令问题

Microsoft Access 数据库引擎 2016 - 在 2010 中正常工作的某些 SQL 查询出现问题

带有 SQL 查询的 Access 中的运行时错误 3067

RStudio中的SQL查询无法正常工作(odbc)