查询3个表和不同的列

时间:2017-09-22 12:25:24

标签: oracle-sqldeveloper

我想做一个相当简单的查询,但我无法弄清楚,如何将表连接在一起。我是这个SQL世界的新手,在阅读了JOIN和SELECT子句的文档之后,我仍然无法解决这个问题。 这是我的3张桌子:

卖家

|SELLER_ID|NUMBER|FIRST_NAME|LAST_NAME|TEAM_NR|
|        1|105   |John      |Smith    |1      |
|        2|106   |James     |Brown    |3      |
|        3|107   |Jane      |Doe      |3      |
|        4|108   |Nicole    |Sanchez  |2      |

服务

|SERVICE_ID|CODE|NAME     |PRICE |SELLER_ID|CLIENT_ID|
|         1| 502|BLAHBLAH |200   |2        |2        |
|         2| 503|BLAHBLAH2|175   |1        |3        |
|         3| 504|BLAHBLAH3|250   |3        |2        |
|         4| 505|BLAHBLAH4|130   |2        |4        |

客户端

|CLIENT_ID|NUMBER |FIRST_NAME | LAST_NAME |
|        1|51     |JOHN       | ADAMS     |
|        2|52     |MARY       | BRYANT    |
|        3|53     |FRANCIS    | JOHNSON   |
|        4|55     |BEN        | CASTLE    |

此查询的目标是根据销售总额(服务的PRICE总和)确定哪个团队(来自卖方的TEAM_NR)在一个月内销售的服务最多

结果应显示"赢得"中所有人的FIRST_NAME,LAST_NAME和TEAM_NR队。

我已经从StackOverFlow和Google那里寻求帮助,并尝试根据我的表格对其进行编辑,但它们并没有成功。

谢谢!

1 个答案:

答案 0 :(得分:1)

SELECT S.FIRST_NAME, S.LAST_NAME, S.TEAM_NR, sum(R.PRICE) Winning
FROM Seller S 
    LEFT JOIN Service R ON (S.SELLER_ID=R.SELLER_ID)
GROUP BY S.TEAM_NR,  S.FIRST_NAME, S.LAST_NAME

编辑甚至不需要在客户端表上加入任何联接。

编辑2 SELECT中的所有字段都必须位于GROUP BY中。