实际上,我引用了任务条件:在 PostgreSQL 中编写一个查询,该查询将显示有史以来购买金额最大的买家的姓名(一个订单中可能有几种不同的产品)。该任务的数据库由三个表组成:
- 买家 - 买家:包含字段buyer_id(主键)、name、city
- 产品 - 产品:product_id(主键)、product_name、price
- 订单 - 订单:order_id(主键)、order_date、buyer_id(外键)、product_id(主键)、数量
数据库和查询的模型:https://onecompiler.com/postgresql/43csjz2v6 模型似乎显示正确,但测试不接受问题的解决方案。也曾经怀疑过自己没有理解清楚条件,并不是对用户所有购买进行求和,而是找出最“贵”的购买,但是这也没有起到作用。我做错什么了?
原始请求代码:
WITH total AS (
SELECT buyers.buyer_id, buyers.name, SUM(orders.quantity * products.price) AS total_order
FROM buyers
INNER JOIN orders ON orders.buyer_id = buyers.buyer_id
INNER JOIN products ON products.product_id = orders.product_id
GROUP BY buyers.buyer_id, orders.order_id)
SELECT name FROM (
SELECT name, SUM(total_order) AS sum_bought FROM total
GROUP BY buyer_id, name) AS max_bought
ORDER BY sum_bought DESC LIMIT 1