Третий по величине используемый язык программирования PostgreSQL - PullRequest
0 голосов
/ 12 марта 2020

Мне нужно найти изобретателя третьего наиболее используемого языка программирования по командам на самом густонаселенном этаже

Я пробовал это до сих пор, но получаю ошибку.

Попытка исправить это, но, кажется, я не могу

select * from (select count(engineer_programming_languages.programming_language), DENSE_RANK() OVER 
(ODER BY count(engineer_programming_languages.programming_language_id DESC) as rk ) 
from engineer_programming_languages ) as t 
join engineer_programming_languages on engineer_programming_languages.programming_language_id
 = programming_languages.id 
join programming_languages where t = 3;

Таблицы:

sqlhunt_development=# \d programming_languages
                                       Table "public.programming_languages"
    Column     |            Type             |                             Modifiers
---------------+-----------------------------+--------------------------------------------------------------------
 id            | bigint                      | not null default nextval('programming_languages_id_seq'::regclass)
 name          | character varying           |
 category      | character varying           |
 date_of_birth | integer                     |
 inventor      | character varying           |
 created_at    | timestamp without time zone | not null
 updated_at    | timestamp without time zone | not null
Indexes:
    "programming_languages_pkey" PRIMARY KEY, btree (id)
Referenced by:
    TABLE "engineer_programming_languages" CONSTRAINT "fk_rails_888c6565a8" FOREIGN KEY (programming_language_id) REFERENCES programming_languages(id)

sqlhunt_development=# \d engineer_programming_languages
                                            Table "public.engineer_programming_languages"
         Column          |            Type             |                                  Modifiers
-------------------------+-----------------------------+-----------------------------------------------------------------------------
 id                      | bigint                      | not null default nextval('engineer_programming_languages_id_seq'::regclass)
 proficency              | character varying           |
 repositories            | integer                     |
 engineer_id             | bigint                      |
 programming_language_id | bigint                      |
 created_at              | timestamp without time zone | not null
 updated_at              | timestamp without time zone | not null
Indexes:
    "engineer_programming_languages_pkey" PRIMARY KEY, btree (id)
    "index_engineer_programming_languages_on_engineer_id" btree (engineer_id)
    "index_engineer_programming_languages_on_programming_language_id" btree (programming_language_id)
Foreign-key constraints:
    "fk_rails_3a4377ed71" FOREIGN KEY (engineer_id) REFERENCES engineers(id)
    "fk_rails_888c6565a8" FOREIGN KEY (programming_language_id) REFERENCES programming_languages(id)

sqlhunt_development=# \d teams
                                        Table "public.teams"
      Column      |            Type             |                     Modifiers
------------------+-----------------------------+----------------------------------------------------
 id               | bigint                      | not null default nextval('teams_id_seq'::regclass)
 name             | character varying           |
 floor            | integer                     |
 features_shipped | integer                     |
 current_bugs     | integer                     |
 created_at       | timestamp without time zone | not null
 updated_at       | timestamp without time zone | not null
Indexes:
    "teams_pkey" PRIMARY KEY, btree (id)
Referenced by:
    TABLE "engineers" CONSTRAINT "fk_rails_5c44cd68ac" FOREIGN KEY (team_id) REFERENCES teams(id)

sqlhunt_development=# \d engineers
                                     Table "public.engineers"
   Column   |            Type             |                       Modifiers
------------+-----------------------------+--------------------------------------------------------
 id         | bigint                      | not null default nextval('engineers_id_seq'::regclass)
 first_name | character varying           |
 last_name  | character varying           |
 age        | integer                     |
 email      | character varying           |
 country_id | bigint                      |
 team_id    | bigint                      |
 created_at | timestamp without time zone | not null
 updated_at | timestamp without time zone | not null
Indexes:
    "engineers_pkey" PRIMARY KEY, btree (id)
    "index_engineers_on_country_id" btree (country_id)
    "index_engineers_on_team_id" btree (team_id)
Foreign-key constraints:
    "fk_rails_48c685314b" FOREIGN KEY (country_id) REFERENCES countries(id)
    "fk_rails_5c44cd68ac" FOREIGN KEY (team_id) REFERENCES teams(id)
Referenced by:
    TABLE "bookshelves" CONSTRAINT "fk_rails_13dec3ee94" FOREIGN KEY (engineer_id) REFERENCES engineers(id)
    TABLE "engineer_programming_languages" CONSTRAINT "fk_rails_3a4377ed71" FOREIGN KEY (engineer_id) REFERENCES engineers(id)

Там вы можете видеть, что в таблицах не так много ключей, за которыми я могу следить чтобы достичь результата и мои идеи уже закончились: (

1 Ответ

1 голос
/ 12 марта 2020

Если Я следил за вами правильно, вы можете использовать dense_rank() следующим образом:

select programming_language_id
from (
    select
        programming_language_id,
        dense_rank() over(order by count(*) desc) rn
    from engineer_programming_languages
    group by programming_language_id
) t
where rn = 3
...