在同一个 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】:您可以将额外的列添加到select
和group 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,但无法正常工作
在 mac OS 上从 crontab 运行 git pull 命令问题
Microsoft Access 数据库引擎 2016 - 在 2010 中正常工作的某些 SQL 查询出现问题