Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL中的多列相关平均函数_Mysql_Sql - Fatal编程技术网

Mysql SQL中的多列相关平均函数

Mysql SQL中的多列相关平均函数,mysql,sql,Mysql,Sql,我有一张包含旅行社客户的表格,共有4列:customerID、访问过的国家、访问过的城市以及在该国家/城市组合中花费的金额 一个客户可能多次访问一个城市,花费的金额不同 我想从以下客户处查询customerID: 至少访问了不同国家的两个城市 这些城市之间的平均支出差异至少为5000英镑 我对其进行了汇总,以便得到每个城市每位客户的平均花费: SELECT customerid, country, city, AVG(amount_spent) FROM Customers GROUP BY c

我有一张包含旅行社客户的表格,共有4列:customerID、访问过的国家、访问过的城市以及在该国家/城市组合中花费的金额

一个客户可能多次访问一个城市,花费的金额不同

我想从以下客户处查询customerID:

至少访问了不同国家的两个城市

这些城市之间的平均支出差异至少为5000英镑

我对其进行了汇总,以便得到每个城市每位客户的平均花费:

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

你的主键是什么?