## Контекст (таблицы и пример данных) ### Таблицы - `users(id, full_name, email, city, age, registe
SQL Developer
Senior
## Контекст (таблицы и пример данных)
### Таблицы
- `users(id, full_name, email, city, age, registered_at)`
- `orders(id, user_id, order_date, amount, status)`
- `payments(id, order_id, payment_date, payment_type, paid_amount)`
### Пример данных
**orders**
| id | user_id | order_date | amount | status |
|---:|--------:|-------------|--------:|--------|
| 10 | 1 | 2025-03-01 | 120.00 | paid |
| 11 | 2 | 2025-03-02 | 2500.00 | new |
**payments**
| id | order_id | payment_date | payment_type | paid_amount |
|----:|---------:|-------------|--------------|------------:|
| 100 | 10 | 2025-03-01 | card | 120.00 |
| 101 | 11 | 2025-03-03 | transfer | 1000.00 |
---
## Задача
Найти пользователей, у которых **нет** неоплаченных (или недооплаченных) заказов.
Критерий: для каждого заказа `SUM(paid_amount) >= orders.amount`.
Ответы
```sql
SELECT u.id
FROM users u
WHERE NOT EXISTS (
SELECT 1
FROM orders o
LEFT JOIN payments p ON p.order_id = o.id
WHERE o.user_id = u.id
GROUP BY o.id, o.amount
HAVING COALESCE(SUM(p.paid_amount), 0) < o.amount
);
```