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 来获取我想要的一条记录。然后在外部查询中,我只是对该客户的所有记录进行排序,并选择金额最大的记录。
我对 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 来获取我想要的一条记录。然后在外部查询中,我只是对该客户的所有记录进行排序,并选择金额最大的记录。