Как отфильтровать столбец псевдонимов в postgres? - PullRequest
0 голосов
/ 16 апреля 2020

Я новичок в Postgres, и у меня возникли трудности в этом запросе:

У меня есть этот запрос:

SELECT "employees_employee"."primary_title",
       "employees_employee"."primary_role_id",
       "employees_organization"."benchmark_organization_id" AS "benchmark_organization",
       COUNT("employees_employee"."id") FILTER (WHERE "employees_employee"."role_mapping_id" IS NULL) AS "count",
       ROW_NUMBER() OVER (PARTITION BY "employees_organization"."benchmark_organization_id", "employees_employee"."primary_role_id" ORDER BY COUNT("employees_employee"."id") FILTER (WHERE "employees_employee"."role_mapping_id" IS NULL) DESC) AS "rank"
  FROM "employees_employee"
  LEFT OUTER JOIN "employees_job"
    ON ("employees_employee"."primary_job_id" = "employees_job"."id")
  LEFT OUTER JOIN "employees_organization"
    ON ("employees_job"."organization_id" = "employees_organization"."id")
 WHERE ("employees_employee"."blueprint_id" = '58b67b16-6890-40d6-8583-210c81647230'::uuid AND "employees_employee"."deleted" IS null)
 GROUP BY "employees_employee"."primary_title",
       "employees_organization"."benchmark_organization_id",
       "employees_employee"."primary_role_id"

Приведенный выше запрос дает мне данные примерно такие:

primary_title                                                         |primary_role_id                     |benchmark_organization              |count|rank|
----------------------------------------------------------------------|------------------------------------|------------------------------------|-----|----|
manager                                                               |d56aae96-cc70-4ef7-8db9-a6aa85f1a93c|be3555cc-aace-463a-9095-f11fe6e0a6fc|    1|   1|
Unknown Title                                                         |                                    |be3555cc-aace-463a-9095-f11fe6e0a6fc|    1|   1|
consultant                                                            |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |  262|   1|
associate consultant                                                  |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |  230|   2|
senior associate consultant                                           |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |   67|   3|
associate consultant intern                                           |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |   21|   4|
incoming associate consultant                                         |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |   16|   5|
management consultant                                                 |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |   10|   6|
senior consultant                                                     |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    8|   7|
junior consultant                                                     |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    2|   8|
specialist consultant                                                 |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    2|   9|
incoming associate consultant intern                                  |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    2|  10|
consulting                                                            |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    2|  11|
recruitment consultant                                                |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  12|
director of global consultant talent management                       |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  13|
industry consultant                                                   |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  14|
consultant (private equity group)                                     |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  15|
alliance partner - bulgaria | management consulting                   |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  16|
associate consultant intern (aci)                                     |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  17|
lenox conyngham scholar at cambridge and incoming associate consultant|0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  18|
practice area consultant in peg automation at bain consulting         |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  19|
practice area consultant                                              |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  20|
consultor                                                             |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  21|
head of talent and consulting ops, nyc                                |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  22|
case team leader                                                      |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  23|
freelance associate consultant                                        |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  24|
associate consultant ii                                               |0b15c7bd-ce3d-4741-b219-77f15a46df09|                                    |    1|  25|

По сути, я просто пытаюсь подсчитать количество сотрудников с primary_title для каждой комбинации primary_role & benchmark_organization. Суть в том, что мне просто нужно 10 самых важных ролей для каждой категории (primary_role & benchmark_organization combo)

Для этого мой подход заключался в добавлении ранга к каждой категории данных и фильтрации окончательных данных. в столбце рейтинга.

Обратите внимание, что столбцы count & rank являются псевдонимными столбцами, а значения рассчитываются во время выполнения.

Я просто хотел бы отфильтровать записи, где рейтинг меньше чем или равно 10.

Это так же просто, как добавить это к предложению where в Mysql или какой-либо другой СУБД, но похоже, что postgres не поддерживает псевдонимы столбцов в предложении where.

Есть ли альтернативный способ фильтрации результата?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...