【问题标题】:Multicolumn dependent average function in SQLSQL中的多列依赖平均函数
【发布时间】:2021-02-27 22:12:36
【问题描述】:

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

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

我想查询以下客户的 customerID:

  1. 去过至少两个不同国家的城市

  2. 这些城市之间的平均支出差异至少为 5000。

我已将其汇总,以便获得每个客户在每个城市的平均花费:

SELECT customerid, country, city, AVG(amount_spent)
FROM Customers
GROUP BY customerid, country, city, amount_spent;

我明白了:

我将如何只输出满足两个条件的客户,在这种情况下只有 customerID 7。不应输出 customerid 9,因为他没有访问不同国家的两个城市,不应该输出 8,因为平均花费的差异小于 5000。

【问题讨论】:

  • 你的主键是什么?

标签: mysql sql


【解决方案1】:

我将此解释为不同国家/地区的至少两个城市满足消费金额条件。棘手的部分是城市需要位于不同的国家 - 并且有人可以访问两个以上的城市。

要解决这个问题,请(正确地)汇总以获得每个城市的平均花费。然后使用自连接满足条件:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2018-07-12
    • 1970-01-01
    • 2013-06-16
    • 2023-01-31
    • 2011-07-10
    相关资源
    最近更新 更多