#sql #postgresql
Вопрос:
Приведем этот пример таблицы. Я хотел бы получить все строки с суммой долгов > 1000.
TABLE_1
ID NAME DEBT
1 Daniel 1000
2 Daniel 10
3 Xavier 500
4 Ricardo 600
5 Ricardo 300
6 Eduardo 2000
7 Eduardo 1000
Таблица результатов должна быть:
RESULT
ID NAME DEBT
1 Daniel 1000
2 Daniel 10
6 Eduardo 2000
7 Eduardo 1000
Это потому, что долг Даниэля составляет 1010, так что он больше 1000. То же самое касается Эдуардо, чей долг составляет 3000. Важным результатом являются идентификаторы. Как я мог бы сделать этот запрос в SQL?
Комментарии:
1. Помечайте только ту базу данных, которую вы используете.
Ответ №1:
Вы можете использовать оконные функции:
select t.* -- or whatever columns you want
from (select t.*,
sum(debt) over (partition by name) as sum_debt
from t
) t
where sum_debt > 1000;
Ответ №2:
Вы можете использовать вложенный запрос.
SELECT * FROM TABLE1 WHERE NAME IN ( SELECT NAME FROM TABLE1 GROUP BY NAME HAVING SUM(DEBT)>1000);