SQL 内连接和 Group By

标签 sql group-by sum inner-join

我有如下所示的表格。

Table1
Field1 Field2
ID111    1,500
ID112    100
ID111    250
ID114    50
ID114    20

Table2
Field1 Field3
ID111  Chris
ID112  Mary
ID114  John

我想要的是如下所示的结果。

ID111 Chris 1,750
ID112 Mary  100
ID114 John  70

我已经通过使用 2 个 sql 执行来实现这一点。感谢昨晚在这个网站上提供帮助的人,我只使用 1 个 sql 语句就让它工作了。但是,我无法将第一个表链接到第二个表以获取更多信息。

通过使用

SELECT SUM(ctotal) AS TransactionTotal 
FROM   table1 
GROUP  BY field1 

我能够实现

ID111 1,750
ID112 100
ID114 70

我当前正在使用此 sql 语句,但它弹出一个错误。

SELECT SUM(ctotal) AS TransactionTotal, 
       table2.field3 
FROM   table1 
       INNER JOIN table2 
               ON table1.field1 = table2.field1 
GROUP  BY table1.field1 

它说不能“您试图执行一个不包含指定表达式“Field3”作为聚合函数一部分的查询。”

如果有人知道解决此问题的方法,我将非常感激。

最佳答案

这应该足够了-

  SELECT t1.firld1, t2.field3,
         sum(t1.CTotal) as cTotal
    FROM table1 t1 INNER JOIN table2 t2
         ON t1.field1 = t2.field1
GROUP BY t1.field1, t2.field3

无论您在 SELECT 语句中选择的哪些列不是聚合函数(即未使用 COUNTSUM)的列> 或其他聚合函数)还应该在 GROUP BY 子句中提及。

这在 MySQL 中并没有特别遵循(有时会产生不需要的结果),但在 Oracle 中是强制性的。然而,当您使用上述查询时,大多数 RDBMS 都会产生类似的结果。

关于SQL 内连接和 Group By,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20534006/

相关文章:

MySQL 使用 sum 和 left join 将结果加倍

c - C中数组的递归求和

python - 如何在pandas数据框中按特定条件进行分组

python - 带有 MultiIndex 列的 Pandas to_sql 索引

sql - 为具有几列组合唯一的表选择一个好的主键

python - 如何在 pandas groupby.size() 之后重命名列?

php - 使用 group by 函数对多列进行 sum()

Mysql按日期排序和按结果分组不同

sql - 选择总计以仅返回 SQL Server 中的一条记录

mysql - 何时使用 ON DELETE CASCADE