1) Write an SQL query to return all users that have at least one order. Every user should come with 3 most recent orders (or fewer if this user has fewer than 3).
Ответ(?):
Я смог написать трехэтажный ответ для одной таблицы (нагуглил похожее).
SELECT a.user_id, a.created_at, count(*) as row_number FROM orders a
JOIN orders b ON a.user_id = b.user_id AND a.created_at <= b.created_at
GROUP BY a.user_id, a.created_at
HAVING row_number <= 3 order by a.user_id, a.created_at DESC, row_numberЭтот запрос почти дает ответ, только вместо имен пользователей выводятся их ИДы. Осталось как то прикрутить таблицу
users, и вместо ИДов выводить имена юзеров. Хотя, может, так и не стоит делать, по отзывам, такие запросы работают медленно.