第三大使用编程语言 PostgreSQL
Third highest used programming language PostgreSQL
我需要找到人口最多楼层的团队使用第三大编程语言的发明者
到目前为止我已经试过了,但是我遇到了错误。
试图修复它,但似乎我不能
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)
您可以在其中看到表格没有太多我可以遵循的键来实现结果,我的想法已经 运行 出来了:(
如果我没看错,你可以使用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
我需要找到人口最多楼层的团队使用第三大编程语言的发明者
到目前为止我已经试过了,但是我遇到了错误。
试图修复它,但似乎我不能
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)
您可以在其中看到表格没有太多我可以遵循的键来实现结果,我的想法已经 运行 出来了:(
如果我没看错,你可以使用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