[英]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 JOIN
比CROSS 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;
使用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.