SQL唯一值无效

时间:2015-03-12 21:21:40

标签: sql database join

我正在建立一个查询,我需要为每个国家/地区选择订单的最大折扣。因此需要每个国家的总折扣。这些国家必须是独一无二的。

我的查询未显示唯一的国家/地区。

SELECT DISTINCT 
    c.Country, 
    SUM((od.Quantity * od.UnitPrice) * od.Discount) as Discount 
FROM 
    Customers c
INNER JOIN 
    Orders o ON (c.CustomerID = o.CustomerID)
INNER JOIN 
    OrderDetails od ON (o.OrderID = od.OrderID)
GROUP BY 
    c.Country, od.Discount

3 个答案:

答案 0 :(得分:2)

od.Discount移除group by,因为需要找到每个国家/地区的最大折扣,只保留按国家/地区划分的国家/地区

同时从选择

中删除distinct
SELECT c.Country,
       Sum (od.Quantity * od.UnitPrice * od.Discount) AS Discount
FROM   Customers c
       INNER JOIN Orders o
               ON c.CustomerID = o.CustomerID
       INNER JOIN OrderDetails od
               ON o.OrderID = od.OrderID
GROUP  BY c.Country 

答案 1 :(得分:1)

最高折扣不会使用max()吗?

Select c.Country, MAX(od.Discount)
FROM Customers c INNER JOIN
     Orders o
     ON c.CustomerID = o.CustomerID INNER JOIN
     OrderDetails od
     ON o.OrderID = od.OrderID
GROUP BY c.Country;

使用distinct时,select中不需要group by

答案 2 :(得分:0)

因为您还按国家和折扣进行分组,但您只想按国家/地区进行分组。

GROUP BY c.Country, od.Discount

变为

GROUP BY c.Country