SQL: 查找第 n 个客户的第 n 个订单

SQL: Find nth order for nth customer

我对 SQL 很陌生,已经学习了 ~3 周,并且已经喜欢上了它。希望在开始申请数据分析师角色之前提高我的技能。

我一直在使用一个虚拟的 DVD 租赁数据库,但发现自己无法解决同行给我的挑战。问题是:“第 4 位顾客最贵的租金是多少?”

我们可以在图片中看到,根据 nth_customer 列,Terrance Roush 是第 4 位顾客(他是第 4 位付款的人)。但问题是 nth_customer 列实际上是返回第 n 个顺序并继续计数到无穷大。所以下次 Terrance 出现时,nth_customer 列将不会显示“4”(这是我希望实现的)。

非常感谢有关如何解决此问题的任何反馈。提前谢谢你。

如果“第四位客户”指的是第四次租赁的客户,您可以将问题分解为两个 - 找到第四位客户,并找到他们最昂贵的租金。像这样:

SELECT * 
FROM payment 
WHERE customer_id = (
    SELECT customer_id 
    FROM payment 
    ORDER BY payment_date 
    LIMIT 1 OFFSET 3
) 
ORDER BY amount DESC
LIMIT 1;

在这里,我在子查询中找到第四个客户的 ID,使用 LIMIT & OFFSET 来获取我想要的一条记录。然后在外部查询中,我只是对该客户的所有记录进行排序,并选择金额最大的记录。