我需要在oracle中使用下面的两个表找到国家/地区平均花费的金额。 Sale_total是每次销售所花的钱,Cust_country是客户的国家。任何帮助将不胜感激。
表
出售
Sale_Id Payment_ID Ship_Id Customer_ID Sale_total ==> Money Spent Sale_date Sale_time
客户
Cust_name Cust_address Cust_city Cust_country Cust_phone Cust_age Cust_sex
答案 0 :(得分:0)
试试这个:
SELECT C.Cust_country as Country, AVG(S.Sale_total) as Spent
FROM Sale S INNER JOIN
Customer C on S.Customer_ID=C.Customer_ID
GROUP BY C.Cust_country
AVG
是一个聚合函数,用于计算一组行中表达式的平均值。
详细了解here。
答案 1 :(得分:0)
您需要在销售表和客户表之间建立链接。可能将Customer_ID作为主键放在Customer表中,并且Sale表中的Customer_ID是外键。假设您这样做,则可以运行以下查询。
SELECT
AVG(S.Sale_Total) Spent,
c.Cust_country
FROM
Sale S
INNER JOIN
Customer C on S.Customer_ID=C.Customer_ID
GROUP BY C.Cust_Country
这会告诉您平均花费的金额以及花费的国家/地区。
理解这个答案的关键是AVG
(平均函数)是一个聚合函数,因为它结合了一些东西。通常当你有一个聚合函数时,你必须对其他列进行分组,因此我们为什么要包含GROUP BY
子句。
您在Customer表中需要Customer Id的原因(除了是它的逻辑位置)之外,您可以在Customer表和Sale表之间建立关系。
建立关系的另一种方法是,您可以创建一个新表来将Customer和Sale链接在一起。称之为客户销售。例如:
<强> Customer_Sales 强>
Customer_Id
Sale_Id
然后,您可以根据此调整查询以加入。