Как получить выборку с группировкой и кол-вом общих записей

Есть таблица:

+-----+-------+
|  id | team  |
+-----+-------+
| 1   | 1     |
| 2   | 2     |
| 3   | 2     |
| 4   | 3     |
+-----+-------+

Мне нужно получить из этой таблицы всех пользователей и посчитать сколько в их команде пользователей всего.

SELECT id, count(team), team FROM user_team GROUP BY id 

Как и положено возвращает что у одного пользователя одна команда.

введите сюда описание изображения


Ответы (3 шт):

Автор решения: splash58

группировать надо по team, ф потом подзапрос объединять с основным по номеру команды

select id, cnt 
  from user_team 
     join 
       (SELECT team, count(id) cnt 
          FROM user_team 
          GROUP BY team
        ) t using(team) 

demo

→ Ссылка
Автор решения: Shevtsov Eugene

Не знаю правильно сделал или нет, но ничего умнее не придумал кроме как это:

SELECT id, team,  COUNT(DISTINCT ut2.user) FROM user_team ut
LEFT JOIN user_team ut2 ON ut.team = ut2.team
GROUP BY id 
→ Ссылка
Автор решения: Akina
SELECT *, COUNT(*) OVER (PARTITION BY team) users_in_team
FROM user_team;

fiddle

→ Ссылка