Как решить Leetcode SQL Найти размер команды с помощью PARTITION BY? - PullRequest
0 голосов
/ 10 марта 2020
Employee Table:
+-------------+------------+
| employee_id | team_id    |
+-------------+------------+
|     1       |     8      |
|     2       |     8      |
|     3       |     8      |
|     4       |     7      |
|     5       |     9      |
|     6       |     9      |
+-------------+------------+
Result table:
+-------------+------------+
| employee_id | team_size  |
+-------------+------------+
|     1       |     3      |
|     2       |     3      |
|     3       |     3      |
|     4       |     1      |
|     5       |     2      |
|     6       |     2      |
+-------------+------------+
Employees with Id 1,2,3 are part of a team with team_id = 8.
Employees with Id 4 is part of a team with team_id = 7.
Employees with Id 5,6 are part of a team with team_id = 9.

Это вопрос с сайта Leetcode.

Мой запрос:

select employee_id, count(employee_id) OVER(PARTITION BY team_id) team_size 
from employee

Что не так с моим запросом или как решить этот вопрос с помощью PARTITION?

1 Ответ

0 голосов
/ 10 марта 2020

Используйте COUNT в качестве аналитической функции c:

SELECT
    employee_id,
    team_id,
    COUNT(*) OVER (PARTITION BY team_id) AS team_size
FROM Employee
ORDER BY employee_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...