簡體   English   中英

SQL:如何在外鍵上使用DISTINCT而不在聚合函數中使用它

[英]SQL: How to use DISTINCT on a foreign key without using it in an aggregate function

因此,我想找到每個購買鮮花的人的平均收入。 但是,我需要考慮重復項,因為有些人可能多次購買了鮮花,而這會使平均價格混亂。

但是,當我將DISTINCT sales.customerid放進去時,它希望我將其放到一個聚合函數中,但是當我這樣做時,它將平均值分開。 它沒有將其平均化。

SELECT DISTINCT sales.customerid, AVG(moneyearned) AS averageearned
FROM customer,  sales
WHERE customer.customerid = sales.customerid 
AND (purchaseflower = TRUE);

我究竟做錯了什么?

您可以使用group by而不是DISTINCT

順便說一下,在這種情況下, INNER JOINCROSS JOIN更好。

SELECT customer.CustomerID, AVG(moneyearned) AS averageearned
FROM customer INNER JOIN sales
ON customer.CustomerID = sales.customerid 
WHERE purchaseflower = TRUE
GROUP BY customer.CustomerID;

SQLFiddle

使用GROUP BY子句代替Distinct,這會將所有重復的客戶分組。

SELECT sales.customerid, AVG(moneyearned) AS averageearned
FROM customer,  sales
WHERE customer.customerid = sales.customerid 
AND (purchaseflower = TRUE)
GROUP BY sales.customerid;

但是請記住,SELECT中所有不在聚合函數中的屬性都應存在於GROUP BY子句中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM