有一个订单表 orders(order_id, user_id, amount, create_time),想要查询每个用户消费总金额最高的前三笔订单,以下SQL语句正确的是?(假设使用支持窗口函数的数据库)
ASELECT order_id, user_id, amount FROM orders GROUP BY user_id ORDER BY amount DESC LIMIT 3;
BSELECT order_id, user_id, amount FROM ( SELECT order_id, user_id, amount, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY amount DESC) as rn FROM orders ) t WHERE rn <= 3;
CSELECT order_id, user_id, MAX(amount) FROM orders GROUP BY user_id HAVING COUNT(*) >= 3;
DSELECT o1.order_id, o1.user_id, o1.amount FROM orders o1 WHERE ( SELECT COUNT(*) FROM orders o2 WHERE o2.user_id = o1.user_id AND o2.amount >= o1.amount ) <= 3 ORDER BY user_id, amount DESC;