Mysql SQL中的多列相关平均函数
我有一张包含旅行社客户的表格,共有4列:customerID、访问过的国家、访问过的城市以及在该国家/城市组合中花费的金额 一个客户可能多次访问一个城市,花费的金额不同 我想从以下客户处查询customerID: 至少访问了不同国家的两个城市 这些城市之间的平均支出差异至少为5000英镑 我对其进行了汇总,以便得到每个城市每位客户的平均花费:Mysql SQL中的多列相关平均函数,mysql,sql,Mysql,Sql,我有一张包含旅行社客户的表格,共有4列:customerID、访问过的国家、访问过的城市以及在该国家/城市组合中花费的金额 一个客户可能多次访问一个城市,花费的金额不同 我想从以下客户处查询customerID: 至少访问了不同国家的两个城市 这些城市之间的平均支出差异至少为5000英镑 我对其进行了汇总,以便得到每个城市每位客户的平均花费: SELECT customerid, country, city, AVG(amount_spent) FROM Customers GROUP BY c
SELECT customerid, country, city, AVG(amount_spent)
FROM Customers
GROUP BY customerid, country, city, amount_spent;
我明白了:
如何仅输出满足两个条件的客户,在本例中,这两个条件仅为customerID 7。客户ID 9不应输出,因为他没有访问不同国家的两个城市;8不应输出,因为平均花费的差异小于5000。我将其解释为不同国家至少有两个城市符合花费条件。棘手的是,这些城市需要位于不同的国家,而且有人可以访问两个以上的城市 要解决这个问题,请正确地汇总以获得每个城市的平均支出。然后使用自连接来满足以下条件:
WITH cc AS (
SELECT customerid, country, city, AVG(amount_spent) as avg_amount_spent
FROM Customers
GROUP BY customerid, country, city
)
SELECT DISTINCT cc1.customer_id
FROM cc cc1 JOIN
cc cc2
ON cc1.customerid = cc2.customerid AND
cc1.country <> cc2.country AND
cc1.avg_amount_spent > cc2.avg_amount_spent + 5000
你的主键是什么?