开发者社区> 问答> 正文

如何使用SUM进行内部联接

我正在尝试加入两张桌子,一张与销售,一张与个人资料。两个表都有相同的客户编号,但销售表没有客户名称。我如何内部加入他们,以便获得客户销售额最高的前10名,但我想显示他们的名字。我试图在下面使用查询:

SELECT TOP 10 b.Amount, a.CustomerName  
FROM       SalesDetail b 
INNER JOIN CustomerProfile a 
        ON a.CustomerNo = b.CustomerNo 
ORDER BY Amount DESC

并显示重复的客户名称,并且未汇总金额。尝试对客户进行分组将提示错误

SELECT TOP 10 b.Amount, a.CustomerName  
FROM       SalesDetail b 
INNER JOIN CustomerProfile a 
        ON a.CustomerNo = b.CustomerNo 
GROUP BY a.CustomerName 
ORDER BY b.Amount DESC

没有内部连接,这是我到目前为止所做的。我可以总结一下,但是我只会得到客户编号和销售额。

SELECT  TOP 10 CustomerNo, SUM (Amount) AS 'Total' 
FROM     SalesDetail 
GROUP BY CustomerNo

感谢您的任何建议。

展开
收起
祖安文状元 2020-01-03 18:43:07 534 0
1 条回答
写回答
取消 提交回答
  • 只需INNER JOIN与ON CustomerNo

    FROM       SalesDetail s
    INNER JOIN CustomerProfile c
            ON s.CustomerNo = c.CustomerNo
    
    

    这样我就可以获得前十大客户总销售额

    您将需要与GROUP BY和ORDER BY一起使用TOP

    SELECT   TOP (10) c.CustomerName, SUM (Amount) AS Total
    FROM       SalesDetail s
    INNER JOIN CustomerProfile c
            ON s.CustomerNo = c.CustomerNo
    
    

    GROUP BY c.CustomerName
    ORDER BY SUM (Amount) DESC

    2020-01-03 18:45:15
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载