sql - 获取sql中不同的记录

标签 sql

我编写了以下查询来获取客户电子邮件地址、订单计数(即客户下了多少订单)、订单的总价。但我得到了重复的结果。

我想要有不同的记录,例如:

Customer A, 5 orders, $125 total
Customer B, 2 orders, $150 total

but i am getting the results like:

Customer A, 4 orders, $100 total
Customer A, 1 order, $25 total
Customer B, 1 order, $100 total
Customer B, 1 order, $50 total

Can you please help me how can i get the result as i want. I have written the following Query:

    Select 
    customers.CustomerID,
    customers.EmailAddress,
    COUNT(Orders.OrderID) AS Ordercount,
    Sum(OrderDetails.TotalPrice * OrderDetails.Quantity) AS TotalPrice 
from 
    customers 
    INNER JOIN Orders ON customers.CustomerID = Orders.CustomerID 
    INNER JOIN OrderDetails ON OrderDetails.OrderID = Orders.OrderID 
GROUP BY 
    customers.CustomerID,
    customers.EmailAddress,
    Orders.OrderID,
    OrderDetails.TotalPrice,
    OrderDetails.Quantity 
ORDER BY customers.CustomerID, orders.OrderID desc

最佳答案

您只需对选择中的字段进行分组,而不是 COUNTSUM 的一部分

Select 
    customers.CustomerID,
    customers.EmailAddress,
    COUNT(Orders.OrderID) AS Ordercount,
    Sum(OrderDetails.TotalPrice * OrderDetails.Quantity) AS TotalPrice 
from 
    customers 
    INNER JOIN 
    Orders ON customers.CustomerID = Orders.CustomerID 
    INNER JOIN 
    OrderDetails ON OrderDetails.OrderID = Orders.OrderID 
GROUP BY 
    customers.CustomerID,
    customers.EmailAddress
ORDER BY 
    customers.CustomerID desc

关于sql - 获取sql中不同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9191720/

相关文章:

sql - 如何将日期时间的转换存储在可以使用 ORDER BY 的新列名的新列中?

mysql - SQL - 查找键等于值的所有 "Relationship IDs",然后选择包含这些 "Relationship IDs"的所有记录

sql - 寻找最活跃的话题或游戏

java - 当实体之间没有关系映射时,在 JPA 中连接两个表

sql - 查询多列不同条件的数据

sql - SSAS 多维数据集 : Error while opening a data source view

mysql - 在 SQL 中检查两个人是否共享相同的电话号码

sql - 根据表B中的记录更新表A中的记录

sql - 外键可以为空。为什么需要它?

mysql - 从 mysql 表中的列中选择最大值、最小值、最后一个值